C语言数据结构——链表

Posted C语言中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数据结构——链表相关的知识,希望对你有一定的参考价值。

技术干货第一时间送达!


今天来介绍一下C语言中常见的一种数据结构——链表

如下是链表的结构示意图:

C语言数据结构——链表

从示意图中我们可以看到,head头结点指向第一个元素,第一个元素的指针指向第二个元素,第二个元素的指针又指向第三个元素,第三个元素的指针指向null。这样我们就可以通过头指针寻找链表中的元素。

下来我们通过一个具体的实例来深入地了解一下链表,编写一个学生信息的链表结构,并且将链表中的信息进行输出。

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>
struct Student{ char name[20];//姓名 int id;//学号 struct Student* next;//指向下一个节点的指针};
int count;//表示链表长度
struct Student* create(){ struct Student* head = NULL;//初始化链表的头指针 struct Student* end, * new; count = 0;//初始化链表长度
end = new = (struct Student*)malloc(sizeof(struct Student));//动态分配内存空间 printf("请输入姓名,学号 "); scanf("%s", &new->name); scanf("%d", &new->id); while (new->id != 0) { count++; if (count == 1) { new->next = head;//使得指向为空 end = new;//跟踪新加入的节点 head = new;//头指针指向首节点 } else { new->next = NULL;//新节点的指向为空 end->next = new;//原来的为节点指向新节点 end = new;//end指向新节点 }
new = (struct Student*)malloc(sizeof(struct Student));//再次动态分配节点的内存空间 scanf("%s", &new->name); scanf("%d", &new->id);
} free(new);//释放空间 return head;};
void show(struct Student* head) { struct Student *temp; int index = 1; printf("有%d位学生: ",count); temp = head; while (temp != NULL) { printf("第 %d 位学生的姓名是:%s,学号是:%d ", index, temp->name, temp->id); temp = temp->next; index++; }}
int main() { struct Student* head;//定义头结点 head = create();//创建节点 show(head);//输出链表 return 0;}

运行结果

C语言数据结构——链表

关于实例的代码就不多解释了,注释已经很详细了,多看几遍就明白了。


END

如果您觉得本篇文章对您有帮助请转发给更多的人

顺手点一下“在看”也是对小编最大的支持


以上是关于C语言数据结构——链表的主要内容,如果未能解决你的问题,请参考以下文章

链表(list)的实现(c语言)

C/C++语言数据结构快速入门(代码解析+内容解析)链表(单链表,双链表,循环链表,静态链表)

C/C++语言数据结构快速入门(代码解析+内容解析)链表(单链表,双链表,循环链表,静态链表)

C 语言链表问题

c语言中链表的问题

C语言教程双向链表学习总结和C语言代码实现!值得学习~