C数据结构链表的插入,删除,逆序…

来源:互联网 发布:深深的恐惧 知乎 编辑:程序博客网 时间:2024/06/04 19:26
小女子最近苦于单链表的一些操作函数,终于有所领悟,急忙想跟和我一样晕头的同学一起分享,写的不对的地方还请大家多多指教哦!同样期待大神的指点!

那么先说一下数组和链表吧!

数组的缺点:我们一般用的传统数组的长度都要事先设定,内存由系统分配,函数调用结束后系统自动回收,不能跨函数调用。

链表:内存空间不要求连续,插入和删除操作灵活

链表是由头结点,首结点,普通结点和尾结点组成的 。
结点存储了两部分信息  1,数据   2,存放下一个结点的结点指针

头节点:链表的第一个结点,不存放数据,指针存放首节点的地址
头指针:指向头结点的指针,通过头指针可以遍历链表,对链表进行所有操作
首结点:第一个存放数据的结点
尾结点:存放有效数据,但是指针为NULL
那么除了头节点,其他结点都存放了有效数据,所以当头结点的指针为NULL,说明此链表为空链表。C数据结构链表的插入,删除,逆序等操作函数(1)

C数据结构链表的插入,删除,逆序等操作函数(1)       
  了解了链表之后,那么我们怎么对链表进行操作呢?
首先需要变量包含两个信息,那么会想到结构体,结构体里的成员一个是数据,另一个是指针,那么这个指针应该定义什么类型呢?因为指针是指向下一个结点的,而下一个结点又包含了两部分信息,所以我们这样定义:

C数据结构链表的插入,删除,逆序等操作函数(1)  1:链表的插入(头插和尾插)

C数据结构链表的插入,删除,逆序等操作函数(1)
       整理好思路之后,头插代码如下:
C数据结构链表的插入,删除,逆序等操作函数(1)
头插法,每次新结点都会插入头结点的下一个结点,也就是首结点的位置。

尾插代码如下:


C数据结构链表的插入,删除,逆序等操作函数(1)
       
未完见C数据结构链表的插入,删除,逆序等操作函数(2)
阅读全文
0 0
原创粉丝点击