C语言数据结构与算法中链表的定义与使用

什么是链表?我们先按照语义来理解“链”我们在生活中可以看到很多的链子一个接一个的串在一起,我们的链表也是一样的,它就是一个一个结构体串联在一起的数据结构。我们来看下面这张图片:上面这张图就是一个链表的结构图,一个的圆圈就是一个结构体里面放着

什么是链表?

我们先按照语义来理解“链”我们在生活中可以看到很多的链子一个接一个的串在一起,我们的链表也是一样的,它就是一个一个结构体串联在一起的数据结构。我们来看下面这张图片:

C语言数据结构与算法中链表的定义与使用

上面这张图就是一个链表的结构图,一个的圆圈就是一个结构体里面放着数据A,AB,C,D,E。那为什么会有两个呢,通过和观察我们发现上面的链表有一个是空的没有数据,数据是从第二个开始的这样的链表我们叫他有头结点的链表,嫌烦下面就是没有头结点的链表。

链表:由0个或多个元素组成的有限序列。

链表头:一个指针 head

头结点:排在第一个元素没有数据的

前驱:B的前驱结点是A

后继:B的后继结点是C

链表在内存的形式

C语言数据结构与算法中链表的定义与使用

顺序链表

C语言数据结构与算法中链表的定义与使用

链式链表

左边的链表叫顺序链表在内存存储的位置是连续的,此时和数组差不多。

右边的链表称为链式链表,我们可以看见在内存中它并不是连续存放的,它是靠结构体指正把它们串在一起的。

建立一个链表

C语言数据结构与算法中链表的定义与使用

头插法链表实现步骤

C语言数据结构与算法中链表的定义与使用

尾插法单链表实现步骤

接下来我们以头插法来创建一个简单的单向链表:

 #include
#include
 #include

 typedef struct student //创建结构体
 {
 int id;
 struct student *next; //指向下一个结点的 指针
 }STU ,*LSTU;

 int main ()
 {
 LSTU head=NULL,ptr ;
 int n=1;
 while(n!=0)
 {
 ptr=(LSTU)malloc(sizeof(STU));
 scanf("%d",&n); //给链表结点赋值
 while(getchar()!='\n');
 if(n==0)
 break;
 else
 ptr->id=n;//给链表赋值
 ptr->next=head; //链表指针移动
 head=ptr; //头指针指向第一个结点
 }
 while(head!=NULL)//打印列表
 {
 printf("%-5d",head->id); //打印链表值
 head=head->next; //链表指针移动
 }
 return 0;
 }

经过上面的代码创建的链表结果如下

C语言数据结构与算法中链表的定义与使用

尾插发的实现方式差不多你们可以自行去实现,后续会更新对链表的增删改查,有兴趣可以关注了解一下。

本文有技术小企鹅原创,欢迎关注,带你一起成长知识!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86354.html

(0)
上一篇 2024-10-03 05:32
下一篇 2024-10-03 05:35

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信