数据结构基础

程序=数据结构+算法(物体结构+物体行为),数据结构是数字世界模拟现实世界的基础,是一切程序的地基。

本篇文章主要是将数据结构的基础内容过一遍,查漏补缺的同时为考研408做准备。

绪论

信息化世界的组成

image-20240115171153068

  • 由此可见,【计算机组成原理、操作系统、数据结构、计算机网络】共同组成了我们的信息化世界。

数据结构的基本概念

数据

image-20240115171659686

数据元素和数据项

image-20240115172218576

数据对象

image-20240115172523889

数据结构的三要素

image-20240115174231014

物理存储结构

  • 线性存储

image-20240115173526627

  • 链式存储

image-20240115173611010

  • 索引存储

image-20240115173648386

  • 散列存储

image-20240115173817887

数据类型和抽象数据类型

image-20240115174651170

数据结构基本概念总结

image-20240115174840572

算法

image-20240115175838786

时间复杂度

image-20240115181207410

空间复杂度

递归调用算法空间复杂度的示例

image-20240116193219476

总结

image-20240116193314210

线性表

线性表的定义

image-20240116193808199

线性表的基本操作

image-20240116194350121

总结

image-20240116194727459

顺序表

定义

image-20240116200012696

总结

image-20240116201240871

基本操作

image-20240117215756926

image-20240119180511250

链表

image-20240119182535106

注意上述红框中的内容,LinkListLNode*实际上是一样的东西,但是含义有区别。

单链表的定义

image-20240119182831295

单链表的基本操作

指定节点前插

巧妙方法:指定节点前插操作,除了通过遍历找到该节点的前一个节点之外,还有一种更快速的实现方法,就是在指定节点后面插入新节点,然后将新节点与指定节点的数据域互换。

image-20240119193848646

删除指定节点

巧妙方法:与上面说的指定节点前插的方法异曲同工,详细步骤见下图。不过这段代码有Bug,因为如果p结点是最后一个节点的话,p->next->data会发生异常。

image-20240119194421354

插入操作总结

image-20240119194921433

查找操作总结

image-20240121220717648

单链表的建立

尾插法:

image-20240122180913068

头插法:

image-20240122181051759

双链表

image-20240122182041692

循环链表

image-20240122192517784

静态链表

image-20240122192742890

image-20240122193640457

基本概念

image-20240123203537196

栈的顺序存储实现

image-20240124213256269

image-20240124214812219

image-20240124214902399

image-20240124215024321

image-20240124215128910

总结

image-20240124215159869

栈的链式存储实现

image-20240125180609417

队列

基本概念

image-20240125181239461

队列的顺序存储实现

image-20240125194305735

队列的链式存储实现

image-20240125195241669

双端队列

image-20240126180247127

image-20240126191540070

总结

image-20240126195052447

栈的应用

括号匹配算法

image-20240127221255124

实现

image-20240127221530180

总结

image-20240127221727019

表达式求值

表达式详解

中缀、后缀、前缀表达式

其实就是树的三种遍历顺序。

image-20240128203935184

中缀转后缀

image-20240128204540303

后缀表达式计算

image-20240128210228967

中缀转前缀

image-20240128210856898

总结

image-20240128211044670

使用栈进行表达式求值

中缀转后缀(机算)

image-20240129202031866

中缀表达式计算

image-20240129203140830

总结

image-20240129203637720

栈在递归中的应用

image-20240130204803805

image-20240130205038327

队列的应用

树的层序遍历

image-20240131213040551

图的广度优先遍历

image-20240131213115651

CPU先到先服务

image-20240131213153113

缓冲区队列

电脑是快速设备,打印机是慢速设配,通过缓冲区队列解决快速设备和慢速设备之间的速度不匹配问题。

image-20240131213314830

特殊矩阵的压缩存储

二维数组的存储结构

image-20240201202233149

行优先存储计算方法

image-20240201202438882

列优先存储计算方法

image-20240201202601061

对称矩阵的压缩存储

image-20240201202905898

三角矩阵压缩存储

image-20240201203216049

与对称矩阵的存储方式基本一致,只需要多加一个常量存储位置即可。

三对角矩阵的压缩存储

image-20240201204033983

稀疏矩阵的压缩存储

使用三元组

image-20240201204217293

使用三元组有个缺点,就是会使其失去随机存取的特性,每次找数据都要遍历所有三元组。

十字链表法

image-20240201204427887

总结

image-20240201204449274

定义

image-20240203202801242

基本操作

image-20240203203126288

总结

image-20240203203809505

串的存储结构

串的顺序存储

image-20240204202843658

串的链式存储

image-20240204203429880

总结

image-20240204203922364

字符串模式匹配

image-20240205213638721

朴素模式匹配算法

image-20240205213858356

image-20240205213924407

image-20240205214141787

image-20240205214448175

总结

image-20240205214503191

KMP算法

image-20240208203904027

其实就是先对模式串进行处理,找到模式串中重复的部分,比如我们已经匹配到了第五个字母,说明前四个字母goog在主串与模式串中是一样的我们会发现第四个字母与前面是存在重复部分的,即字母g,因此当我们匹配到第五个字母的时候,我们知道主串中在匹配第四个字母的时候已经有一个g了,就不需要再比一次了,所以模式串的指针直接从第二个字母开始比较。

换句话说,当我们匹配到第五个字符时,如果发现不匹配,根据部分匹配表,我们可以知道“goog”(前四个字符)中有多少字符是重复的前缀。在这个例子中,“g”是一个重复的前缀(在第一位和第四位)。如果第五个字符不匹配,我们可以将模式串移动,使模式串的第二个字符与主串中当前位置的字符对齐,而不是重新从“google”的第一个字符开始匹配。

next数组求法

image-20240212204840569

image-20240212205435760

image-20240212205733321

image-20240212205923301

KMP算法总结

image-20240216211915597

next数组的进一步优化

image-20240217171320999

image-20240217171640757

树与二叉树

基本概念

image-20240218195431050

结点、树的属性描述

image-20240218200825151

有序树和无序树

image-20240218200942066

森林

image-20240218201034901

总结

image-20240218201127761

常考性质

image-20240219164304075

image-20240219163114522

image-20240219164216761

image-20240219164152594

image-20240219165337480

image-20240219165900275

总结

image-20240219165922096

二叉树

image-20240219171529120

image-20240219171542108

几个特殊的二叉树

image-20240219183118151

image-20240219195658844

image-20240219195750938

总结

image-20240219195829251

除特殊说明,博客文章均为东篱原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇