数据结构
学习数据结构
索托飞人
这个作者很懒,什么都没留下…
展开
-
详解二叉树非递归三种遍历
二叉树遍历有递归,也有非递归。其实他们之前本质是一样的,非递归只是将递归的步骤一步步写出来,所以看了非递归代码之后回想递归代码也更好理解。一.前序遍历现在有一棵二叉树,如图(画的不是很好,好像有点歪)如果是递归代码:就是输出,然后左递归,右递归就结束了。其实递归就是栈的应用,在这里要引入栈。假如根结点地址为T,思路就是遍历左孩子入栈,并输出。当左孩子输出完,取栈顶,找右孩子。再遍历右孩...原创 2020-03-31 15:55:00 · 290 阅读 · 0 评论 -
二叉树和二叉树递归遍历实现
之前的数据结构都是线性的,都是一对一的线性结构。其实还有一对多的结构,那就是树。一.树树:树是n(n>=0)个结点的有限集注:n>0时根结点是唯一的,不会有很多根结点。子树个数没有限制,但是是互不相交的。一些概念结点的度:结点拥有的子树数称为结点的度,树的度是树内各结点的度最大值。 比如刚刚这个图,D结点的度为3,B结点的度为1。树的度为3深度:树中结...原创 2020-03-30 16:22:34 · 1256 阅读 · 0 评论 -
队列的链式存储结构及代码实现
之前使用的顺序存储的队列,但是就是哪怕是循环队列,也可能会遇到数组溢出的问题。这时,使用链式存储会是一个更好的选择。一.链队列队列的链式存储结构,其实就是线性表的单链表,只不过只能尾进头出,简称为链队列。将头指针指向链队列的头结点并不是front指针直接指向第一个元素。二.链队列实现链队列的存储结构,这里申明两个结构体,一个是链表的,一个是队列的。typedef int QElem...原创 2020-03-19 15:24:19 · 1051 阅读 · 0 评论 -
队列及循环队列和代码实现
之前我们提到了栈。栈是一种线性表,它是先进后出的,是FILO。同时我们也存在一种线性表,是先进先出的。那就是队列。一.队列队列在平时我们生活中还是比较常用的。比如在操作系统中,就是这样的。哪些操作先进入的,哪些操作就先实现。队列是只允许一端进行插入操作,另一端进行删除操作的线性表。允许插入的一端称为队尾,允许删除称为队头。如果是普通队列...原创 2020-03-19 14:31:53 · 363 阅读 · 0 评论 -
链栈及代码实现
之前提到了顺序栈,我们可以方便的存取元素,不过栈的顺序存储结构要求我们事先申请好固定大小的内存空间用于存储数据,在使用的过程中无法再动态地对栈的空间进行扩容。这样使得在增加元素时不能很随意,还得判断空间是否够用。一.栈的链式存储对链栈来说,基本不存在栈满的情况,除非内存没有可以申请的空间了。链栈的结构和链表非常相似。只是相当于在链表前面的上面有个会移动的结构体指针。链栈存储:type...原创 2020-03-17 15:56:15 · 1000 阅读 · 0 评论 -
栈的顺序存储及代码实现
栈是在数据结构中经常能遇到的,在我们平时也能遇到。比如当我们在打断点调试时,经常能遇到堆栈,先调用的后出来。或者网页的后退键也是栈的应用。一.栈及其初始化栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入的一端称为栈顶,另一端称为栈底。栈称为先进后出,简称FOLI栈也是线性表,也有前驱后继关系。线性表的表尾是栈顶栈插入操作叫进栈,入栈栈删除操作叫出栈栈的结构栈的顺序...原创 2020-03-15 18:17:23 · 931 阅读 · 0 评论 -
静态链表及代码实现(包括一些操作)
线性链表对于后续结点是通过指针来指向的。有些人容易在指针那里搞混。那么其实用数组来代替指针。之前也是听说过,但是具体也没用过。一.静态链表及初始化静态链表里面每个元素都有两个数据域,其中cur是用来存储下个元素的位置。静态链表的存储结构typedef int Status;typedef int Elemtype;typedef struct{ Elemtype data; int...原创 2020-03-15 15:20:36 · 466 阅读 · 0 评论 -
指针和Linklist * L与Linklist L
在C中我们经常会遇到指针,通常大家看代码时也能看到很多指针,这里就总结一下有些指针用法和区别。指针数据对象存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量。指针声明 //法一:直接声明 int x = 1; int *p = &x; //方法2:动态分配内存给指针 int...原创 2020-03-05 22:10:21 · 1412 阅读 · 0 评论 -
线性表顺序存储的一些操作(初始化,添加,删除)
最近有时间学一些自己想学的,就找来看看数据结构。看的是大话数据结构。之前学数据结构是大一时候,现在看这个还可以,没那时候学的累。但是还是需要进行一些总结,以免自己会忘记。虽然大部分和书上差不多,但是不自己动手敲,还是会有问题。或者有些地方自己这样写会好理解一些。一.线性表顺序存储线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。接下来我们对线性表结构进行了解...原创 2020-03-03 17:46:08 · 861 阅读 · 0 评论 -
线性表链式存储的一些操作(创建,添加,删除)
之前总结了顺序存储,现在总结一下链式存储。其实就是链表,链表在实际中用的比较多。一.链式存储之前的顺序存储,在插入和删除时需要移动大量元素。主要原因是因为这些元素是连续存储的,但同时在查找时也是他优点。如果相邻之间不是连续的,只要知道下一个元素位置,这样插入删除就方便多了。这就是链表。在链式存储中,除了要存储元素信息外,还要存储后继元素存储地址。一般链表结构就像上面这样,然后我们可以定...原创 2020-03-05 17:29:23 · 2441 阅读 · 0 评论