单链表概念及查找插入删除操作

特点:

存储单元元可以存在内存中未被占用的任意位置

存储存取数据元素的信息和后继元素的存储地址

概念:

把存储数据元素信息的域称为数据域,把存储直接后续位置的域称为指针域。

指针域中存储的信息称为指针或链,这两部分信息组成数据元素称为存储映像,称为结点

因为每个节点中只包含一个指针域,所以叫做单链表。

 链表中第一个结点的存储位置叫做头指针,最后一个结点指针为空。

注意:

头结点的数据域一般不存储任何信息。(可以用来存放链表的长度)

头结点可以为空,头指针不为空。

头结点不一定是链表的必须要素,头指针是链表的必须要素。

头指针是链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。

操作:

1.获取链表第i个数据(时间复杂度为O(n)):

思路:

声明一个结点p指向链表第一个结点,初始化j从1开始

当j<i时,遍历链表,让p指针向后移动指向下一个结点,j+1

若到链表末尾p为空,则说明第i个元素不存在

否则查找成功,返回结点p的数据

代码如下:

2.插入:

思路:

查找操作

否则查找成功,在系统中生成一个空结点s

将数据元素e赋值给s->data

先使s指针指向下一个元素,再让第i-1位元素指针指向s(顺序不能搞反,顺序弄反会导致死循环)

返回成功

代码如下:

3.删除:

 思路:

查找操作

查找成功则将q=p->next(需要删除的结点)赋值给e

执行删除语句p->next=p->next->next或p->next=q->next

释放q节点

返回e

代码如下:

单链表优势:适用于插入或删除数据频繁的情况

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值