链表实现原理与头尾插入

本文深入探讨了链表的基本原理,包括其组成和作用,并详细阐述了单链表的实现过程,包括如何创建节点、头尾插入、删除节点以及链表反转。通过示例代码展示了在C语言中实现这些操作的具体步骤,强调了链表在灵活性方面的优势。
摘要由CSDN通过智能技术生成

一、链表原理

(1)链表的组成

        链表是由若干个节点组成的(链表的各个节点结构是完全类似的),节点是由有效数据和指针组成的。有效数据区域用来存储信息完成任务的,指针区域用于指向链表的下一个节点从而构成链表。

(2)链表的作用

        时刻谨记:链表就是用来解决数组的大小不能动态扩展的问题,所以链表其实就是当数组用的。直白点:链表能完成的任务用数组也能完成,数组能完成的任务用链表也能完成。但是灵活性不一样。

        简单说:链表就是用来存储数据的。链表用来存数据相对于数组来说优点就是灵活性,需要多少个动态分配多少个,不占用额外的内存。数组的优势是使用简单(简单粗暴)。      

二、链表构成  

1、单链表的实现

 

    (1)单链表是由节点组成的,节点中包含:有效数据和指针。

                struct node

                {

                        int data;

                        struct node *pNext;

                }

    (2)定义的struct node只是一个结构体,本身并没有变量生成,也不占用内存。结构体定义相当于为链表节点定义了一个模板,但是还没有一个节点,将来在实际创建链表时需要一个节点时用这个模板来复制一个即可。 

                            

    (3)  头指针pheader(每个链表都会有一个头)

        头指针并不是节点,而是一个普通指针,只占4字节。头指针的类型是struct node *类型的,所以它才能指向链表的节点。              

2、创建一个链表节点

    (1)链表的内存要求比较灵活,不能用栈,也不能用data数据段。只能用堆内存。

    (2)用堆内存来创建一个链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值