什么是链表?
我们先按照语义来理解“链”我们在生活中可以看到很多的链子一个接一个的串在一起,我们的链表也是一样的,它就是一个一个结构体串联在一起的数据结构。我们来看下面这张图片:
上面这张图就是一个链表的结构图,一个的圆圈就是一个结构体里面放着数据A,AB,C,D,E。那为什么会有两个呢,通过和观察我们发现上面的链表有一个是空的没有数据,数据是从第二个开始的这样的链表我们叫他有头结点的链表,嫌烦下面就是没有头结点的链表。
链表:由0个或多个元素组成的有限序列。
链表头:一个指针 head
头结点:排在第一个元素没有数据的
前驱:B的前驱结点是A
后继:B的后继结点是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;
}
经过上面的代码创建的链表结果如下
尾插发的实现方式差不多你们可以自行去实现,后续会更新对链表的增删改查,有兴趣可以关注了解一下。
本文有技术小企鹅原创,欢迎关注,带你一起成长知识!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86354.html