void create_node_fun(int n)
15 {
16 int i;
17 head = (NODE*)malloc(sizeof(NODE));
18 if(head == NULL)
19 {
20 printf("head==NULL,error!!!");
21 exit(0);
22 }
23 head->data = 0;
24 head->link = NULL;
25 NODE *p = NULL;
26 for(i = 0;i < n;i++)
27 {
28 p = (NODE *)malloc(sizeof(NODE));
29 p->data = i;
30 p->link = head->link;
31 head->link = p;
32 }
33 }
上面代码的30和31行代码:把第一次开辟出来的节点称为p1,第二次开辟出来的节点称为p2,那这两行不就表示p1->link = head->link; head->link = p1; 然后到第二个节点的时候就变成这样了: p2->link = p1; p1 = p2。
这样理解不知道对不对,反正我感觉很奇怪,应该是不对的,但是不明白,所以请教一下各位大神。
还有,我看到网上有人是专门是有开辟一个新的节点,叫做尾指针,专门用来指向链表的结尾的。不知道这两种方法哪种可用性高点。
看你这段代码做什么了,如果你想每次在头节点后面插入一个新节点,结果是
head->n->n-1->n-2->...->3->2->1
那么这代码是对的。
插入节点既可以在头插入(如你的代码),也可以在尾插入,插入顺序既可以逆序(如你的代码),也可以正序。