随笔分类 - 数据结构大整理
2021-2-4,决定考研了,复习一下数据结构
摘要:#include <iostream> #include <iterator> using namespace std; /** * 无线循环队列,可扩容(内部自动扩容) * 实现迭代器访问循环队列 * @tparam T */ template<class T> class queue{ publ
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> /* * 给出RNL,RLN,NRL是为了,有更多解决问题的方法 */ typedef struct node { char data; struct node *lchild,*rchild; }*BitTree,Bit
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> /* * 给出RNL,RLN,NRL是为了,有更多解决问题的方法 */ typedef struct node { char data; struct node *lchild,*rchild; }*BitTree,Bit
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> #define MaxSize /* * 这里是不带头结点的线索二叉树,带头结点的以后再写 * 线索二叉树: * 把树型逻辑结构变成线性逻辑结构,可以顺序访问二叉树中的元素,用来加速查找前驱和后继 * pay attent
阅读全文
摘要:1.二叉树层次遍历的原理 算法思想: 利用队列实现的,因为层次遍历的序列正好符合队列的特性,先进先出,所以用队列这个工具实现二叉树的层次遍历 但pay attention to 这里我用的是循环队列,因我害怕队列溢出,导致内存泄漏的不规范行 2.代码如下 #include<iostream> #in
阅读全文
摘要:1..中序遍历的非递归算法算法思想 >利用栈来代替递归遍历 1.初始时依次扫描根节点及根节点的左侧结点,并将一一入栈,如果结点不存在,结束入栈2.(当结点不存在时),出栈一个结点,访问它(可以是输出结点的数据域的值)3.扫描该结点的右孩子结点,并将其入栈4.依次扫描该右孩子的所有左侧结点,并将一一入
阅读全文
摘要:#include<stdio.h> #include<stdlib.h> typedef char ElemType; //结点定义 typedef struct node{ ElemType data; struct node* lchild,*rchild; }BiTNode,*BiTree;
阅读全文
摘要://共享栈的实现 -- 是一个顺序栈 /* * c++实现,面向过程 * date:2021-03-08 * auther:nanfengnan * 共享栈的定义:栈底定义在顺序栈的两端,两个栈顶向两方延伸 * 方法: * 初始化一个空栈 * 入栈 * 出栈 * 判断栈空 * 得到栈顶元素 * 销毁
阅读全文
摘要:#include<iostream> #include<stdlib.h> using namespace std; typedef int DataType; typedef struct node{ //队列的链式结点 DataType data; struct node *next; }Lin
阅读全文
摘要:#include<iostream> #include<vector> using namespace std; typedef int DataType; #define MaxSize 50 typedef struct { //循环队列的存储结构 DataType data[MaxSize];
阅读全文
摘要:#include <iostream> #define MaxSize 50 using namespace std; typedef int DataType; //队列的顺序存储结构 typedef struct{ DataType data[MaxSize]; //存放队列中的数据元素 int
阅读全文
摘要:#include<iostream> #define MaxSize 50 typedef int DataType; using namespace std; //栈的数据结构 //顺序栈 /* 数据运算: 1.初始化一个空栈:初始指针 1 2.数据元素入栈:如果栈没满,数据元素入栈 3.数据元素
阅读全文
摘要:1.我们默认一般使用带头结点的单链表 head-next=NULL;初始状态 2.头结点的数据域不赋值 头节点只有指针域有值 3.带头结点的好处,就是在插入和删除,求表长等时不需要判断是不是空表,因为带头结点head了,就一定不是空表4.单链表和循环链表的区别 单链表的结尾指向NULL,循环链表的结
阅读全文
摘要:#include <iostream> #include <stdlib.h> using namespace std; typedef int DataType; //使int重命名为DataType DataType flag = 0; //flag是用来判断神魔时候输入数据结束 typedef
阅读全文
摘要:单链表的创建方法:头插法和尾插法 单链表创建建议带头节点,因为能减少麻烦 按照是否带头节点又分为:带头结点的头插法,尾插法和不带头结点的头插法,尾插法 1.单链表的结构定义 typedef int DataType; //给int数据类型起一个别名,叫DataType typedef struct
阅读全文
摘要:#include <iostream> #define MAXSIZE 100 using namespace std; typedef int DataType; //使int重命名为DataType typedef struct{ DataType data[MAXSIZE]; //定义Data
阅读全文
摘要:线性表复习: 1.线性表定义:线性表是由n(n>=0)个具有相同数据类型的的数据元素构成的有限序列 常记为: A=(a1,a2,a3,...,an) 其中: A是线性表名,n为线性表长度 2.线性表有两种存储方式:顺序存储和链式存储 3.线性表分为:顺序表和链式表 写算法时,先写逻辑结构要使用的数据
阅读全文
摘要:基础知识: 1.数据(Data),数据元素(DataElement),数据项(初等项,组合项),数据结构(Data_Structure)的定义 数据:是信息的载体。能被计算机识别,存储和加工。分为数值型数据(整数,浮点数,复数等)和非数值型数据(图片,图像,视频,文字,字符等) 数据元素:是数据的基
阅读全文