当前位置:网站首页>线性表(顺序表和链表)
线性表(顺序表和链表)
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申请堆区内存,需要自己去释放申请的内存空间。



开放式问题
边栏推荐
- Detailed explanation of AtomicInteger
- 手机银行体验性测试:如何获取用户真实感受
- 说一件事
- Electronic Industry Inventory Management Pain Points and WMS Warehouse Management System Solutions
- 力扣 622. 设计循环队列
- 读书笔记之《你想过怎样的一生?》
- C#里如何简单的校验时间格式
- T31开发笔记:metaipc测试
- Golang sync/atomic 包的原子操作说明
- selenium installation and environment configuration firefox
猜你喜欢
随机推荐
Win11dll文件缺失怎么修复?Win11系统dll文件丢失的解决方法
【学习日记】win64配置openni的vs2022编译环境
仿制药的未来商机--个人研发的体会
指针常量和常量指针概述
Unity 打包和切换平台|Build Settings窗口介绍
WPF使用Prism登录
读书笔记之《你想过怎样的一生?》
汇编实例解析--利用tcb,tss,全局tss,ldt管理任务实现任务切换
T5: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
洛谷P4799 世界冰球锦标赛
MySQL LIKE – 语法和用法示例教程
Mobile Banking Experience Test: How to Get the Real User Experience
知识点滴 - 什么是iAP2 (上)
Monitor is easy to Mars debut: distributed operations help TOP3000 across management gap
洛谷P2880 Balanced Lineup G
【C语言刷题】双指针原地修改数组(力扣原题分析)
音频隐写一
从技术全景到场景实战,透析「窄带高清」的演进突破
Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
论文阅读_胶囊网络CapsNet









