首先,这个函数是用来创建链表的。
用户输入链表各个节点的值,然后创建链表
q->next=p; 初始q是表头,p表示用户输入的新节点。然后p这个新节点插入q后面
q=p; q指向新添加的节点
实际上q也就是当前节点的指针
q->next=head; //你想象一下q是当前节点,也就是最新添加的节点,那么把他的下一个节点定位为头节点,说明什么,可能你想到了,那就是循环链表(忘了怎么叫的了 就这么称呼吧),也就是蛇头和蛇尾相连了,就是一个圆圈。
q=p;//这个就不懂什么意思了。。有什么用啊,p不是插入了q的下一个节点了么.
解释:
这样做是为了让q 每次都指向最后一个节点这样可以方便下一次在末尾插入
q->next=head; //把头结点插入q的下一个节点干嘛
解释:
你的q每次都是指向末尾节点,q->next=head; 是为了构成一个循环链表
1. q是链表的尾指针,指向链表的最后一个结点。所以新结点p插入链尾后,新结点就变成了链尾,q指向新结点p就是指向了链尾了。
2. q->next = head;的意思是把链尾结点的next指针指向头结点,你可以画个图看一下,结果是链表变成了单向循环链表。