搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > C语言中文社区 > C语言数据结构——链表

C语言数据结构——链表

C语言中文社区 2020-06-29

技术干货第一时间送达!


今天来介绍一下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("请输入姓名,学号\n"); 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位学生:\n",count); temp = head; while (temp != NULL) { printf("第 %d 位学生的姓名是:%s,学号是:%d \n", index, temp->name, temp->id); temp = temp->next; index++; }}
int main() { struct Student* head;//定义头结点 head = create();//创建节点 show(head);//输出链表 return 0;}

运行结果

C语言数据结构——链表

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


END

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

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


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《C语言数据结构——链表》的版权归原作者「C语言中文社区」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注C语言中文社区微信公众号

C语言中文社区微信公众号:gh_f87cdcdad8ed

C语言中文社区

手机扫描上方二维码即可关注C语言中文社区微信公众号

C语言中文社区最新文章

精品公众号随机推荐