【自考】数据结构导论-线性表

前言

总觉得这次的自考才是真正准备自考的样子,你付出了多少一定会有多少的回报,最终的感觉还是回归课本,做多少题最终还是要以课本为主啊,不管多细,反正是课本上的内容,还有课后题,非常重要了
在组长的带领下,我们把书看的已经很熟悉了,但是对于我来说逻辑上的东西好理解,但是代码题真的是一大硬伤啊,真的是不会写,很扎心了!

概述

逻辑结构(数学模型):集合,线性,树形,图结构
存储结构(物理结构):索引,顺序,散列,链式
数据,数据元素,数据项
算法分析:正确性,易读性,健壮性,时空性

线性表

线性表是线性结构,结点一对一的关系,如果结点不为零,则除起始节点没有直接前驱外,其他每个结点有且仅有一个直接前驱,除终端结点没有直接后继外,其他每个结点有且仅有一个直接后继

基本运算:初始化,求表长,读表元素,定位,插入,删除

线性表的顺序存储:最简单的存储方式

特点:依次存放,连续的存储单元,逻辑结构中相邻的结点存储位置也相邻

(也就是你放哪我放哪,依次往后放,而且整体的顺序存储是有固定大小的,所以会有存满的情况)
线性表中最频繁的是数据元素的比较和移动

(我觉得我最失误的地方是在最初看书的时候没有看插入,删除,定位这些书中给的基本运算的代码,这样没有一个印象,最后的时候导致没有印象而不会写)

插入:顺序存储时插入是在后面插入,最好的情况是在最后一个地方插入,时间复杂度为O(1) 最坏的情况是在头结点后面插入,时间复杂度为O(n)
查找第i位上的元素:不成功的情况下比较次数为 n+1(因为有岗哨的存在)
成功情况下比较次数为n-i+1

线性表的链接存储

一个数据元素和一个指针组成单链表的一个结点(像火车一样的一截连着一截,前一个结点存放下一个结点的地址,如果访问需要从头访问定位到需要访问的结点)
头指针
链接存储是动态分配空间的所以轻易不会存满
在这里插入图片描述
单链表:如上图所示
循环链表:将单链表中尾结点的指针指向头结点即为循环链表

双向循环链表:如下图
在这里插入图片描述
基本实现:初始化,求表长,读表元素,定位,插入,删除
以单链表的插入为例子:就像一排小朋友排好队拉着手,又来了一个小朋友来要插入进去,总要有两个小朋友打开让她进来,于是就是两个正在拉着手的小朋友松开手,让这个小朋友进来,她认识的那个小朋友告诉她另一个小伙伴是谁,然后她先去拉不认识的那个小伙伴再来拉认识的那个小伙伴,这样插入操作就完成了
(仔细看书,多看几遍,其实插入和删除的指针移动很简单)

顺序和链式的比较

查找顺序表是随机存取 时间复杂度为O(1)
单链表需要从头遍历时间复杂度为O(n)
定位基本操作为比较,所以时间复杂度都为O(n)
插入、删除顺序表中需要查找比较,并且移动所以时间复杂度为O(n)
单链表中需要定位,所以时间复杂度为O(n)

暂时先写这些,后续可能会有更新接下来的章节!

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼白z

感谢老板请我喝咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值