
数据结构
Walker Dong
还隐约记得教学生C/C++语言的那几天,当我对着std::vector如数家珍的时候,突然发现自己已经走了很长的路。是五年前的我不敢想象的
展开
-
栈和队列的简单应用(菜鸟营)
栈和队列的简单应用(在二叉树中)以前写过栈和队列使用C实现的帖子,不过以后的使用我打算使用C++,虽然实现起来C++和C区别还不算十分的大,但是C++在表达逻辑的角度要比C使用的工具更加广泛。我们先介绍一种问题,函数的调用问题。我们知道函数可以实现递归调用,而且在思路上,递归调用非常的香。但是递归调用有一个很大的问题,就是调用函数会花费额外的时间开销。如果一直使用递归解决问题,会在函数调用上花费大量的时间。所以,我们剖析本质,看看递归到底是什么过程,能不能换成非递归的办法。我们知道其实程序运行时就是使原创 2020-11-06 15:25:00 · 321 阅读 · 0 评论 -
二叉排序树的C实现(以排序查找为主线,顺带介绍二叉树的实现)(面向新手,大佬勿喷)
非线性结构前面我已经写过线性结构,我说过,线性结构是非线性结构实现的基础,宝贝们是不是还有一点疑惑是什么意思?给你们康康嗷。二叉树首先我们第一个要知道的结构就是二叉树,但是对于一般的最抽象的二叉树你可能会有些疑惑,我们直接从一个应用角度出发,来探讨二叉树的各种性质。首先,二叉树是一种非线性结构,它和单纯的数组和链表不同,它有更加花里胡哨的实现方式。二叉树是什么个逻辑关系呢,这就好比一个家族,而且国家制定了二胎政策,每个家庭只能最多有两个孩子,就是这种爹和儿子的关系,构成了二叉树的逻辑。假设Dav原创 2020-05-27 22:35:26 · 267 阅读 · 2 评论 -
线性结构的C实现之队列和栈(面向新手,大佬勿喷)
这篇文章讲解一下什么叫队列什么叫栈。这两种结构往往并不新鲜,其实就是简化版的数组或者链表,但是确实这两种结构应用的范围应该比数组和链表的应用要广一点,至少对于我来说,实现一些复杂操作离不开这两种结构。这个里面的操作很多都是前两个部分的继承,对数组和链表还不熟的请查看上面两篇文章。队列结构队列是所谓先进后出的一种特殊结构,回想当年Walker插队的时候,多么风光,这下没办法了,明令禁止不允许插队,Walker只能乖乖的到队尾,慢慢排呗,什么时候排到自己了,什么时候再出来。计算机中实现队列可不是很容易原创 2020-05-19 01:07:06 · 178 阅读 · 0 评论 -
线性结构的C实现之链表(面向新手,大佬勿喷)
链式存储的链表对于线性结构还有一种实现模式,就是链表,相比于数组,链表的优势在于,他理论上没有最大的规模,不像数组需要规定一个明确的最大值。而且插入删除操作相比于数组来讲比较容易,但是实现起来比较花里胡哨,需要一段时间去训练,实现原理还是很简单的。注意:链表的操作建议同学画图理解。我们是这样建立链表的,首先是建立一种叫做结构体的东西,这种东西呢将各种基本结构融合在一起,然后进行一个封装,这一点C做的相对没有那么强,封装只能选择假装已经封装了哈。。毕竟C面向过程。对于链表就需要这样一种封装,即制作一个节原创 2020-05-18 23:51:02 · 182 阅读 · 0 评论 -
线性结构的C实现之数组(面向初学者,大佬勿喷)
鄙人能力有限,可能会有错误和遗漏,有什么建议和意见望大家积极斧正,我会在开头鸣谢的。嘻嘻线性结构线性结构是我们经常使用的逻辑结构,是一切操作的基础,贯穿着我们写代码的操作的始终。下面,我们针对这一结构做一个深入的讨论。线性结构有两种实现方式,数组和链表,数组的操作相对比较容易,而且安全快速,所以如果没有特殊情况,对于一个任务首选数组实现。但是对于插入删除比较频繁或者事先并不确定规模的操作一般可以考虑链表。顺序存储的数组数组即顺序存储结构,我这里使用最简单的实现方式。#include<st原创 2020-05-18 16:18:48 · 316 阅读 · 2 评论