![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 91
yjhqukq
这个作者很懒,什么都没留下…
展开
-
线性表的链式存储-双向循环链表,认识的无限性
一.一字一句的血汗代码 1.Tools.h #define VerticalGap 1 //操作菜单的行间距 #define SPAN 50 //操作菜单的横向距离 void outputOperatingMenu(char** menu, int length); void duplicate(char* token, int amount); void inputData(char* hint, char* type, void* data); 2.Tools.c #include"To原创 2021-01-28 23:34:05 · 140 阅读 · 0 评论 -
线性表的链式存储-单向循环链表,认识的前进上升
一、链表的再认识(带起源结点) 1.起源结点 首结点的前驱结点即为起源结点,起源结点出现的目的是为了更方便地操作链表,其数据域可用来存放有效结点长度。 从我个人的角度出发,起源结点是链表的发源地,是链表生命的开始,孕育了链表后续的一切,是链表有效结点之母、之父,见证了链表全面的、联系的、运动的、有矛盾的、从无到有的变化过程。万分悲痛的是,它是无性繁殖,且每个后代只能生育一个后代。 什么鬼东西?胡说八道! 通俗来讲,链表的一切操作都要从起源结点出发,通过起源结点方可追踪到链表后续所有的有效结点。 2.起源指针原创 2021-01-17 22:16:01 · 259 阅读 · 0 评论 -
线性表的链式存储-双向链表,认识的反复性,实践认识再实践再认识
“单链表能够独立实现,那么双链表的实现也就干脆利落了”,这是我实现完单链表之后的想法。于是受惯性思维的驱使,大部分都是照搬单链表,甚至可以说是直接复制过来。 后来我仔细一想:单链表一个数据域,一个指针域(指向后继结点);双链表一个数据域,两个指针域,一个指向前驱结点,一个指向后继结点。双链表的功能是实现了,可其前指针域貌似没怎么使用。 于是我把双链表代码推倒重来,在实现双链表的过程中,尽可能多的使用前指针域。不这样做的话,那双链表跟单链表有什么区别?双链表的存在意义何在? 一、谈谈链表的定义及个人认识 前指原创 2021-01-08 22:47:00 · 238 阅读 · 0 评论 -
线性表的链式存储-单链表,从认识到实践
单链表和顺序表都是线性表,其外在操作完全一致。唯一的差异就在存储结构上,就是这点差异导致了迥然不同的代码实现。话不多说,赶紧上车吧! 运行效果图: 1.单链表初始化过程 2.遍历单链表 3.为单链表追加元素 4.为单链表删除元素 5.为单链表插入元素 6.为单链表定位元素 。 。 。 。因单链表与顺序表的外在操作完全相同,故省去部分运行效果图 。 。 。 7.清空单链表 至此,运行效果图展示完毕! 附代码 #include <stdio.h> #include <mallo原创 2020-12-19 13:16:09 · 173 阅读 · 2 评论 -
线性表的顺序存储-顺序表,对“突然的自我”的否定,对自我的扬弃
在上篇博客中,尽管顺序表的功能已经实现了,但是用了好多自己的野路子,代码也不是很优雅,很直观。 于是我的内心便产生了两种想法:“把博客删掉,重新写”或者“把博客的代码换掉也就能省去很多精力”,思前想后,我决定还是保留下来,尽管代码有些许自己的野路子,但这也是我的心血,是我成长的见证。 这一次的顺序表,与上次的顺序表相比,功能相差无几,操作也几乎相同,在操作菜单做了些改善,操作的反馈感很直接。 不说废话了,直接看效果图 1.顺序表的初始化过程 2.遍历顺序表 3.为顺序表追加元素 4.删除顺序表的某个元原创 2020-12-18 20:39:05 · 169 阅读 · 3 评论 -
线性表的顺序存储—顺序表,突然的自我
先看代码整体结构 再看运行效果 初始化顺序表 追加元素 定位元素的下标 通过元素下标获取元素 插入元素 排序 删除元素 修改指定下标的元素值 清空顺序表后,操作菜单就会呈现提示“顺序表已清空” 顺序表清空后,若再次进行某些函数操作,函数也会给出提示“顺序表已清空”。这里就拿顺序表的遍历和排序作示例 最后看代码?我还是复制粘贴后直接运行吧!读程真的很累! #include <stdio.h> #include <malloc.h> #include <std原创 2020-12-13 16:40:11 · 159 阅读 · 0 评论