python线性表顺序链式存储实现_线性表的链式存储(C代码实现)

本文介绍了线性表的链式存储结构,对比了顺序存储的不足,并详细讲解了链式存储结构的节点定义、单链表的操作(插入、删除、建表、遍历、清空等)。通过C代码实现,展示了链式存储在插入和删除操作上的优势,同时也指出其在查找和修改上的不便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性表的链式存储结构

线性表的实现分顺序存储结构和链式存储结构。

上一节我们学学习了线性表的实现分顺序存储结构,并实现解顺序存储的基本操作。

这一节我们来学习线性表链式存储结构,那我们再想象一下我为什么我们要引入链式存储结构,万物存在必有其道理

主要还是因为线性存储结构存在着这样一个问题:当我们需要插入和删除元素时,就必须挪动大量与之无关的元素,因为线性存储结构结点与节点之间的关系是相邻关系,一个节点挨着一个节点

如为了插入或者删除一个元素移动大量的元素,这样就降低了程序运行效率。

当我们引入

顾名思义链式存储结构,数据与数据之间是以链式关系来产生连接的的,我们可以脑部一下锁链的样子,不扯淡了,进入正题--

我们如何定义一个链式存储结构的节点呢?

/*Node表示一个节点*/typedefstructNode{int data; //数据域

struct Node* next; //存放下一个节点的指针

}Node;

typedefstruct Node* LinkList; /*取了一个别名,定义LinkList = Node*,用于存放节点的指针*/

一个节点包括一个数据域和指针域

lazy.gif

我们将这种只带有一个指针域的线性表称为单链表。

链表中第一个结点的存储位置叫做头指针。

单链表的第一个结点前附设一个结点,称为头结点。

注意可以没有头节点,但是要是链表,就一定存在头指针。

那么问题来了,我们如何区分头节点和头指针呢?

头指针:是指向链表的指针,如果不存在头节点,那么头指针就会指向链表的第一个节点。

头节点:实际上是不存在的,只不过是为了链表的一些操作方便而设置的,头节点与第一个节点以链式关系相连,并且头节点的数据域没有意义,指针域存放第一个节点的地址。

lazy.gif

单链表的插入

lazy.gif

s->next =p->next;

p->next=s;    //注意前后顺序不能调

单链表的删除

lazy.gif

q= p->next;

p->next = q->next;

free(q);

单链表的建表(头插法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值