你们好,最近小未来发现有诸多的小伙伴们对于打印链表c语言,链表c语言这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 创建一个指向头节点的指针,空链表。
2、 以学生结构为例
3、 struct student{
4、 int num;
5、 char name[20]
6、 struct student *next; };
7、 typedef struct student STU;
8、 /*-将结构学生作为STU */
9、 用malloc()函数在物理内存中打开一个空间存储头节点;并定义一个指向头节点的指针变量:
10、 STU* head=(STU*)malloc(sizeof(STU));
11、 进行防错处理
12、 if(head==NULL) {printf('Error-01');exti(0);}
13、 清空头节点的指针字段,指示空链表。
14、 head-next=NULL;
15、 注意,此时只创建了头节点,但它没有与第一个节点连接。
16、 定义一个新节点,一个尾节点
17、 定义指向新添加节点的指针。
18、 STU* pnew=NULL;
19、 思考:尾节点的指针是怎么来的?
20、 (1)如果只添加一个节点,只需将头节点的指针字段指向新节点,然后将新节点的指针字段留空即可。
21、 head-next=pnew;
22、 pnew-next=NULL;
23、 (2)如果添加多个节点,此时尾节点在哪里?所以需要引入一个中间量尾来始终指向整个链表的尾节点。
24、 STU* tail=NULL;
25、 tail-next=NULL;
26、 以后每增加一个节点,都是通过循环加在原链表的尾部之后。
27、 (3)程序写在这里。在整个链表中,实际上只有一个节点,即头节点和尾节点。所以尾节点一开始也是指向头节点的。
28、 tail=head;
29、 那么新的节点一开始指向哪里呢?
以上就是链表c语言这篇文章的一些介绍,希望对大家有所帮助。