c语言数据结构学习心得——栈】的更多相关文章

栈(Stack) 只允许在一端进行插入或删除操作的线性表 栈顶(Top):栈中允许进行插入和删除操作的那一端: 栈底(Bottom):固定的,不允许进行插入或删除的另一端 1.栈是受限的线性表,所以自然具有线性关系. 2.栈中元素后进先出. 栈的顺序存储==顺序栈 #define MaxSize 50 //定义栈中元素的最大个数 typedef struct{ Elemtype data[MaxSize]; //存放栈中元素 }Sqstack; //顺序栈简写 1.Top的值不能超过MaxSiz…
二叉树 n(n>=0)个结点的有限集合:(五种形态) 1.或者为空二叉树,n=0: 2.或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成.左子树和右子树又分别是一棵二叉树. 3.每个结点最多有2棵子树 4.左右子树有顺序 特殊二叉树 一.斜树 二.满二叉树:1.分支结点都存在左右子树 2.叶子都在同一层 3.非叶子结点的度一定为2 4.相同深度二叉树中满二叉树结点个数最多,叶子树最多 三.完全二叉树:编号与同高度的满二叉树一一对应. 1.叶子结点只可能在层次最下面的两层出现,集中在左…
图G由顶点集V和边集E组成,记为G=(V,E) 图不可为空,一定有顶点集不为空 有向图:有向边(弧)的有限集合 无向图:无向边的有限集合 连通:顶点V到顶点V'有路径 连通分量:无向图中的极大连通子图(极大:1.顶点足够多:2.极大连通子图包含依附这些点的所有边) 强连通分量:有向图中的极大强连通子图 连通的生成树:包含图中的全部n个顶点,但只有n-1条边的极小连通子图 度:以该顶点为一个端点的边数目 入度(ID):以顶点为终点的有向边数目 出度(OD):以顶点为起点的有向边数目 图的存储结构…
排序:将无序的序列重新排列为有序的序列. 插入类排序 插入类排序:在一个有序的序列中,插入一个新的关键字,知道所有的关键字都插入形成一个有序的序列. 直接插入排序:首先以一个元素为有序的序列,然后将后面的元素依次插入到有序的序列中合适的位置直到所有的元素都插入有序序列. void InsertSort(ElemType A[],int n){ int i,j; ;i<=n;i++) ].key){ A[]=A[i]; ;A[].key<A[j].key;--j) A[j+]=A[j]; A[i…
顺序查找(线性查找) 主要用于在线性表中的查找 int Search1(int a[],int n,int key){ ;i<=n;i++){ //注意从1开始 if(a[i]==key)return i; //查找成功 } ; //查找失败 } int Search2(int a[],int n,int key){ int i=n; a[]=key; //设置“哨兵” while(a[i]==key){ //若不是找的元素 i--; //从前往后查找 } return i; //查找失败也返回…
树 一对多的树型结构,有且只有一个特定的根结点. 结点的度:结点拥有子树的数量{ 度为0:叶子结点/终端结点. 度不为0:非终端结点/分支结点(除去根结点其它称为内部结点).} 树的度:树中所有结点的度数的最大值. 树的层次:根为第一层,以此类推. 结点的深度:根结点开始,自顶向下累加. 结点的高度:叶结点开始,自底向上累加. 树的高度(深度):树中结点的最大层数. 结点关系: 祖先结点:根结点到该点的唯一路径上的任意结点. 子孙结点 双亲结点:根结点到该点的唯一路径上的最近结点. 孩子结点 兄…
队列 只允许在一端进行插入,在另一端进行删除的线性表 队头(Front):允许删除的一端(队首) 队尾(Rear):允许插入的一端 FIFO:先进先出 不要求从数组首位开始存储队列 #define MaxSize 50 //定义队列中元素的最大个数 typedef struct{ ElemType data[MaxSize]; //存放队列元素 int front,rear; //队头指针和队尾指针 }SqQueue; 循环队列 其中,首尾相连的顺序存储的队列叫循环队列 入队:rear=(rea…
线性表:具有相同数据类型的n(n>0)个数据元素的有限序列. 主要有顺序存储和链式存储. 顺序存储: 特点:地址连续,随机/存取,顺序存储. 建立:首地址/存储空间大小(数组),表长. 方式:静态和动态. 优点:存储密度大:随机存储:快速存取表中任一位置元素. 缺点:插入删除移动大量元素:对存储空间要求高,会产生存储空间的碎片. 1.插入 bool ListInsert(SqList &L,int i,Elemtype e){ ||i>L.length+) //判断i范围是否有效 re…
1.数据>数据元素>数据项      数据的基本单位是数据元素,数据元素的基本单位是数据项 2.运算的定义->针对逻辑结构 集合:同属于一个集合,无其他关系.(数学上的集合) 线性结构:1对1关系(排队) 树形结构:1对多关系(族谱) 图状网状结构:多对多关系(地图) 3.运算的实现->针对物理结构 顺序存储:存储物理位置相邻 链式存储:存储的物理位置未必相邻 索引存储:类似于目录 散列存储:通过关键字直接计算出元素的物理地址 4.时间复杂度 o(1)<o(log2n)<…
数据结构学习之栈求解n皇后问题 0x1 目的 ​ 深入掌握栈应用的算法和设计 0x2 内容 ​ 编写一个程序exp3-8.cpp求解n皇后问题. 0x3 问题描述 即在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求:(1)皇后的个数n由用户输入,其值不能超过20,输出所有的解.(2)采用类似于栈求解迷宫问题的方法. 0x4 代码 #include <iostream> #include <cstdio> #include <cstdlib…