当前位置:网站首页>线性表(顺序表和链表)
线性表(顺序表和链表)
2022-08-02 18:48:00 【没有人会真的躺平】
2.1线性表的定义和基本操作
线性表的定义

线性表的基本操作

只有c++支持引用,c语言不支持引用。
2.2-1顺序表的定义(静态分配在栈区,动态分配申请的堆区的空间)
顺序表的定义

顺序表的实现——静态分配(使用静态数组)




顺序表的实现——动态分配



2.2-2顺序表的插入删除
顺序表的插入




顺序表的删除



2.2-3顺序表的查找
按位查找



按值查找




2.3-1 单链表的定义





不带头结点的单链表

带头结点的单链表


2.3-2 单链表的插入删除
按照位序插入
带头节点


下图 i 为位序,至少为1




不带头节点



指定结点的后插操作


指定结点的前插操作
第一种办法:循环查找p的前驱 q,再对q后插

第二种方法:在要前插的那个节点后边 插入一个节点,交换这两个节点的数据,相当于实现前插了
按位序删除(带头结点)


指定结点的删除



2.3-3单链表的查找

按位查找




按值查找
按值查找只能从头往后扫描


2.3-4 单链表的建立(尾插法和头插法)
尾插法
初始化单链表
每次从头循环到尾,去添加一个新节点,很费时间
所以可以确定一个指针 r 直接指向最后一个节点。边添加节点,边移动表尾指针 r
头插法

2.3-5 双链表

双链表的初始化

双链表的插入


双链表的删除

双链表的遍历

2.3-6 循环链表
循环单链表



循环双链表




2.3-7 静态链表
定义一个静态链表

下图是定义静态链表的一般方法
下图是王道书上定义静态链表的方法,SLinkList[MaxSize]像java中定义数组SLinkList[ ]
证明了图中结论
简单基本操作的实现


下图和上图一样,只是多一些笔记
2.3-8 顺序表的链表的比较


下图 声明数组啥的 在栈区,系统自动回收;malloc申请堆区内存,需要自己去释放申请的内存空间。



开放式问题
边栏推荐
猜你喜欢

快速掌握jmeter(一)——实现自动登录与动态变量

Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3

3 and a half years of testing experience, I don't have 20K, it seems it's time to change jobs

固态硬盘接口类型介绍

JVM内存和垃圾回收-04.程序计数器(PC寄存器)

我靠这套笔记自学,拿下字节50万offer....

有什么好用的IT资产管理软件

NIO基础之三大组件

被审稿人吐槽没有novelty!深度学习方向怎么找创新点?

简单有效又有用的关闭antimalware service executable的方法·备份记录
随机推荐
E - Addition and Multiplication 2(贪心)
常用随机变量的数学期望和方差
快速掌握jmeter(一)——实现自动登录与动态变量
register和volatile的区别
WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器
JVM内存和垃圾回收-05.虚拟机栈
2022最新彩虹表
cache2go-源码阅读
How to mitigate the attack of corporate account hijacking?
What skills are the most practical for college students in communications?
MySQL 事件调度
洛谷P1966 火柴排队
动态折线图,制作原来是这么简单
Three components of NIO foundation
【软考软件评测师】基于经验的测试技术
Mppt光伏最大功率点跟踪控制matlab仿真
[Dynamic Programming Special Training] Basics
Detailed explanation of AtomicInteger
小姐姐面试蚂蚁金服被虐经历,心疼...
【OpenNI2】资料整理 -- 不断更新中