前言
如果想在链表的首位置增加结点,就是在头结点后一个结点插入一个结点,把 p 指针指向头结点就可以操作了;如果要在末尾增加结点,那么指针 p 必须指向最后一个结点,然后也就可以开始操作了。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| #include <stdio.h> #include <stdlib.h>
typedef struct node { char* name; int age; struct node* next;
} LinkList;
int main() { LinkList* HeadNode = (LinkList*)malloc(sizeof(LinkList)); (*HeadNode).age = 0; (*HeadNode).name = NULL;
LinkList* p = HeadNode;
LinkList* node = (LinkList*)malloc(sizeof(LinkList)); (*node).age = 10; (*node).name = "张三";
p->next = node; node->next = NULL;
LinkList* node1 = (LinkList*)malloc(sizeof(LinkList)); (*node1).age = 11; (*node1).name = "李四";
node1->next = p->next; p->next = node1;
LinkList* q = HeadNode->next; while (q) { printf("age:%d name:%s\n", q->age, q->name); q = q->next; } LinkList* t = HeadNode; while (t->next) { t = t->next; } LinkList* node3 = (LinkList*)malloc(sizeof(LinkList)); (*node3).age = 12; (*node3).name = "王五";
t->next = node3; node3->next = NULL; LinkList* q1 = HeadNode->next; printf("第二次遍历:\n"); while (q1) { printf("age:%d name:%s\n", q1->age, q1->name); q1 = q1->next; }
return 0; }
|
输出结果
age:11 name:李四
age:10 name:张三
第二次遍历:
age:11 name:李四
age:10 name:张三
age:12 name:王五
可以看到,结果完全符合我们的预期。
全文完,感谢阅读。