数据结构
线性结构、链表、堆栈、队列、树、图
棂卡卡
这个作者很懒,什么都没留下…
展开
-
PTA数据结构_六度空间
六度空间#include <stdio.h>#include <stdlib.h>#define MAX 1001int map[MAX][MAX];int visited[MAX];double vex[MAX];int Queue[MAX] = {0};int N, M, front = 0, rear = 0;void build_map(){ for (int i = 1; i <= N; i++) { for (原创 2020-11-26 18:11:56 · 286 阅读 · 0 评论 -
栈_顺序栈存储结构及操作
栈栈的定义栈是一个后进先出(Last In Fist Out, LIFO)的线性表,是特殊的线性表,包括顺序栈、链栈。但它是操作受限的线性表,即只能在表尾进行插入和删除操作对于栈来说,表尾称为栈顶(top),表头称为栈底(bottom)栈的插入操作叫做进栈(Push),也称为压栈、入栈栈的删除操作叫做出栈(Pop),也称为弹栈不含元素的空表为空栈(top==base)顺序栈顺序栈为栈的顺序存储结构,动态分配一维数组的存储空间,封装了base,top,stacksize栈底指针base原创 2020-11-01 23:27:38 · 515 阅读 · 0 评论 -
线性表_动态分配一维数组、单链表、循环链表、双向链表
线性表线性表的定义:由零个或多个数据元素组成的有限序列若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继。线性表强调是有限的,事实上无论计算机发展到多强大,他所能处理的元素都是有限的。线性表的分类线性表有两种物理存储结构:顺序存储结构和链式存储结构。线性表的顺序存储结构线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。顺序存储结构的动态分配封装的三个属性:数组的存储空间的起始位置,即数组elem线性表的当前长原创 2020-11-01 20:53:17 · 478 阅读 · 0 评论 -
树_还原二叉树
还原二叉树若给出二叉树的前序和中序,或者给出二叉树的后序和中序,可以还原出唯一的二叉树。但给出前序和后序不可以。1.前序和中序递归算法根据二叉树的前序序列和中序序列,还原二叉树。分析可知,前序序列的第一个元素是该二叉树的根结点,在中序序列中找到根结点的位置(下标),便可知道该二叉树的左右子树中各自结点的个数。据此,可将前序序列分为:根结点+左子树+右子树,将中序序列分为:左子树+根结点+右子树。问题又转化为,根据左右子树的前序序列和中序序列,分别还原二叉树(左右子树)。前序序列第一个元素:根结点原创 2020-10-25 21:47:10 · 1307 阅读 · 0 评论 -
树_遍历二叉树
一、以二叉链表为存储结构/*-----二叉树的二叉链表的存储结构-----*/typedef int Telemtype;typedef struct BiTNode { Telemtype data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;1.先序遍历二叉链表递归算法/*-----先序遍历二叉树的二叉链表,递归算法-----*/void preorder_traverse(BiTree T){ if(T原创 2020-10-24 18:15:41 · 96 阅读 · 0 评论 -
树_树和二叉树的基本概念、性质和存储结构
树树(Tree)是n(n>=0)个结点的有限集。当n=0时成为空树。在任意一棵非空树中,有且仅有一个特定的称为根(Root)的结点,当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。结点的分类:度为0的结点称为叶结点(Leaf) 或终端结点度不为0的结点称为分支结点或非终端结点,除根结点外,分支结点也称为内部结点。结点拥有的子树数称为结点的度(Degree),树的度取树内各结原创 2020-10-24 17:07:46 · 206 阅读 · 0 评论