首页 > 其他分享 >56.《数据结构-线性表白话看》

56.《数据结构-线性表白话看》

时间:2024-09-11 20:13:29浏览次数:11  
标签:结点 线性表 指向 插入 56 next 链表 prior 数据结构

知识参考王道考研 硬看知识和视频一直瞌睡无聊 破了两天题才寻得规律 故在此记录
分为顺序存储和链式存储
线性表的定义:具有相同数据类型的n个数据元素的有限序列 注意 相同数据类型 有限序列
还有就是 线性表是一种逻辑结构 顺序表和链表是存储(物理)结构
1.顺序存储 即顺序表
这个不太难 几句废话结束
分清 位序和数组下标的区别 为序-1=下标
可以随机存取 存储密度高 
关于操作实现 即CRUD
1.初始化的时表长度设为0 无论静态或动态分配
2.关于插删 需要移动元素 所以时间复杂度  浪费在此
3.查找(按序号)很简单 按值的话一一遍历

插入一个元素自然需要从头开始找到那个位置 然后插入 其后元素向后移动 length+1
image

删除一个元素也需要从头开始找到那个位置 然后删除 其后元素向前移动 length-1
image


2. 关于练习题后续补充 但最难的是链表
因为参考的是考研的所以就以此为例
1.单链表
2.双链表
3.循环链表
4.静态链表
对于链表 不仅存储值也存储一个地址
所以删除和插入较顺序表简便
表的初始化
这里需要一个概念头结点 是为了方便运算
带头结点
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
不带头结点
L=NULL
找某个结点(按序号)
LNode*p=L;
int j=0;
while(p!=NULL&&j<i){
p=p->next;
j++;
}
单链表和双链表的插入删除 这个才是最重要的 也是最难的

单链表插入 就他妈的记住让q的next指针指向的是S S的next指针指向的是P
image


双链表插入(中间的data省略了) 就是四次记住
要插入的元素prior指向P next指向q
p的next指向s q的prior指向s
无论他怎么变都一样 顶多就是q或者p不给你 但你可以根据另一个找到另一个
如:p->next->prior即为q的prior 你让他指向S即可
image


单链表删除 很简单就是让q的next指向的不是要删除的p而是s即可 然后free(p)
image


多链表删除
q的next指向s s的prior指向q 然后free(p)
image


关于循环链表
循环单链表:最后结点(尾结点)指针指向头结点 判空条件 头结点是否等于头指针
循环双链表:头节点的prior指向尾结点 判空条件 头结点的prior和next域都等于头指针

上面我漏掉了插入删除是否是特殊结点 即第一个元素或最后一个元素 或是前插后插都一样 按上分析即可
静态链表也不多bb了直接看真题分析


image

image

image

ok了 后续再补充错题

标签:结点,线性表,指向,插入,56,next,链表,prior,数据结构
From: https://www.cnblogs.com/gaodiyuanjin/p/18408773

相关文章

  • 数据结构:线性表的顺序表实现
    顺序表的操作:这里采用了结构体和指针的部分知识//自定义结构体typedefstruct{ DataTypelist[Maxsize]; intsize;}SeqList;voidListInitiate(SeqList*L){ L->size=0;}intListLength(SeqListL){ returnL.size;}//插入是从前往后移动intListInsert(Seq......
  • 2024.09.11 1856版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • rk3568系统buildroot开发笔记
    编译异常infrom_bz2importBZ2Compressor,BZ2DecompressorModuleNotFoundError:Nomodulenamed‘_bz2’sudoapt-getinstalllibbz2-dev然后删掉rk356x_bsp_bak/rk356x_bsp/build-iot/buildroot_output/rockchip_rk3568_iot/build/host-python3-3.10.5重新编......
  • 算法与数据结构——图的基础操作及图的遍历(广度优先与深度优先)
    图的实现基于邻接矩阵的实现给定一个顶点数量为n的无向图:初始化:传入n个顶点,初始化长度为n的顶点列表vertices,使用O(n)时间;初始化n*n大小的邻接矩阵adjMat,使用O(n2)时间。添加或删除边:直接在邻接矩阵中修改指定的边即可,使用O(1)时间。而由于是无向图,因此需要同时更新两个......
  • Cathepsin D Protein, Mouse (HEK293, His)是一个约 56.0 kDa 的小鼠组织蛋白酶 D,带有
    品牌:MedChemExpress(MCE) 纯度:Greaterthan95%asdeterminedbyreducingSDS-PAGE. 分子式:Lyophilizedfroma0.2μmfilteredsolutionof20mMMES,150mMNaCl,pH5.5.分子量:Approximately46kDa存储条件:在-20°C下可保存2年。复溶后,在4°C下可稳定......
  • lc56.合并区间
    语言:Python关键思路:比较当前区间start和上一个不重叠区间end',如果start<=end',可以合并,新的end直接在上一个不重叠区间的end'和当前区间的end中取maxsolution:classSolution(object):defmerge(self,intervals):""":typeintervals:List[List[int]]......
  • 可持久化数据结构
    可持久化线段树看这个。可持久化字典树最大异或和考虑设\(s\)为\(a\)的前缀异或和数组,我们最终的答案就是找一个\(p\in[l-1,r-1]\),然后求出\(s_n\operatorname{xor}x\operatorname{xor}s_p\)。首先,对于最大异或数对问题,可以使用\(01\)\(trie\)解决,这里不再赘述。......
  • C++入门基础知识59——【关于C++数据结构】
    成长路上不孤单......
  • Springboot车辆充电桩管理系统的设计与实现mv56d
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景与意义随着新能源汽车的普及,车辆充电桩的数量急剧增加,如何高效、智能地管理这些充电桩成为亟待解决的问题。一个完善的车辆充电桩管理......
  • Springboot宠物救助管理系统56185--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着宠物数量的不断增加,流浪动物及需救助宠物的问题日益凸显。传统的宠物救助方式往往受限于信息不对称、救助资源分散等问题,难......