C语言数据结构——链表
Posted C语言中文社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数据结构——链表相关的知识,希望对你有一定的参考价值。
技术干货第一时间送达!
今天来介绍一下C语言中常见的一种数据结构——链表
如下是链表的结构示意图:
从示意图中我们可以看到,head头结点指向第一个元素,第一个元素的指针指向第二个元素,第二个元素的指针又指向第三个元素,第三个元素的指针指向null。这样我们就可以通过头指针寻找链表中的元素。
下来我们通过一个具体的实例来深入地了解一下链表,编写一个学生信息的链表结构,并且将链表中的信息进行输出。
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;
}
运行结果
关于实例的代码就不多解释了,注释已经很详细了,多看几遍就明白了。
【END】
如果您觉得本篇文章对您有帮助请转发给更多的人
顺手点一下“在看”也是对小编最大的支持
以上是关于C语言数据结构——链表的主要内容,如果未能解决你的问题,请参考以下文章
C/C++语言数据结构快速入门(代码解析+内容解析)链表(单链表,双链表,循环链表,静态链表)