线性表章节知识

ai-1称为ai的直接前驱(简称前驱),ai+1称为ai的 直接后继(简称后继)
非空线性表的特点:
仅有一个表头结点a1,没有前驱,仅有一个后继a2。
线性表有两种存储结构:顺序存储和链式存储
顺序表随机存取的特点:可以在O(1)时间内存取数据元素

链表:物理上不一定相邻的存储单元来存储线性表中的数据元素
数据元素自身信息和指针这两部分组成了数据元素的存储映像,称为结点。
一个结点可以包含一个或多个指针,一个指针使其指向后继的称为单链表,两个指针分别指向前驱和后继的称为双向链表。
单链表中的结点:数据元素自身的信息和该元素后继的存储地址。数据域存放数据元素信息,指针域存放其后继地址。
每个结点存储地址存放在其前驱结点的next域中,因此第一个结点的地址必须存放到一个指针变量中,该指针变量称为头指针(head),这样就可以通过head找到每个结点。最后一个结点没有后继,其指针域必须置空(NULL),表面单链表到此结束。
即使是空表,头指针head也不为空

单链表最后一个结点的指针域指向头结点,就叫做单循环链表,简称循环链表。
区别仅在于判断单链表结束的条件是指针是否为空,判断循环链表结束的条件是指针是否指向头结点。
在循环链表中可以从任意结点开始遍历整个链表
找后继O(1),找前驱O(n)
为了找前驱,只能付出空间的代价,为每个结点增加一个指向前驱的指针域prior,称为双向链表。增加头结点同样可以简化双向链表的操作。

在顺序表第i个位置上插入item,共需要移动n-i+1个元素
…删除第i… ,共需要移动n-i个元素

单链表分为后插法和前插法,后插时间复杂度为O(1),前插为O(n)
析构函数:单链表中的new运算符生成的结点空间无法自动释放,因此需要析构函数将链表的存储空间释放
合并有序单链表
双向链表中的删除操作步骤可以颠倒

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值