数据结构
sp2_hybrid
这个作者很懒,什么都没留下…
展开
-
C语言日记:堆栈
C语言:堆栈(Stack) 堆栈:具有一定操作约束的线性表,只在一端(栈顶,Top)做插入删除操作。1:基本特点(先进后出)2: 插入数据:Push 删除数据:Pop3:操作集...原创 2019-02-02 20:03:41 · 157 阅读 · 0 评论 -
【数据结构】二叉平衡树
平衡二叉树(Balance Binary Tree)(AVL树):空树,或者任一结点左、右子树高度差的绝对值不超过1。观察破坏者与被破坏者之间的位置关系。LL旋转 RR旋转 LR旋转 RL旋转...原创 2019-02-19 15:38:31 · 72 阅读 · 0 评论 -
【数据结构】二叉搜索树
二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉排序树。非空左子树的所有键值小于其根结点的键值。 非空右子树的所有键值大于其根结点的键值。 左、右子树都是二叉搜索树。关于二叉搜索树操作的特别函数:Position Find(ElementType X,BinTree BST): 从二叉搜索树BST中查找元素,返回其所在结点的地址。 Position...原创 2019-02-19 14:58:41 · 89 阅读 · 0 评论 -
【数据结构】二叉树的遍历
二叉树的遍历 先序遍历 遍历过程:访问根节点、先序遍历其左子树、先序遍历其右子树。void PreOrderTraversal(BinTree BT){ if(BT){ printf("%d",BT->Data); PreOrderTraversal(BT->Left); PreOrder...原创 2019-02-12 15:07:13 · 109 阅读 · 0 评论 -
【数据结构】树的基本知识
树的一些基本术语结点的度(Degree):结点的子树个数 树的度:树的所有结点中最大的度数 叶结点(Leaf):度为0的结点 父节点(Parent):有子树的结点是其子树的根节点的父节点 子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点,子结点也称孩子结点 兄弟结点(Sibling):具有同一父结点的各结点彼此是兄弟结点。 路径和路径长度:从结点n1到结点n...原创 2019-02-12 11:58:20 · 263 阅读 · 0 评论 -
【数据结构】图的遍历
深度优先搜索DFS(Depth First Search) 利用堆栈 类似二叉树的递归先序遍历广度优先搜索BFS(Bread First Search) 利用队列 类似二叉树的层序遍历/* 邻接表存储的图 - DFS */ void Visit( Vertex V ){ printf("正在访问顶点%d\n", V);} /* Visited[]为全局变量,...原创 2019-02-22 22:49:16 · 70 阅读 · 0 评论 -
【数据结构】图的基本概念
什么是图(Graph):表示“多对多”的关系 包含一组顶点:通常用V(Vertex)表示顶点集合 一组边:通常用E(Edge)表示边的集合抽象数据类型定义类型名称:图(Graph) 数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成 操作集Graph Creat(): 建立并返回空图; Graph InsertVertex(Graph G,Vertex...原创 2019-02-22 22:17:20 · 302 阅读 · 0 评论 -
【数据结构】哈夫曼树与哈夫曼编码
哈夫曼树的定义带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根结点到每个叶子结点的长度为Ik,则每个叶子结点的带权路径长度之和就是WPL。 最优二叉树或哈夫曼树:WPL最小的树。哈夫曼树的构造typedef struct TreeNode *HuffmanTree;struct TreeNode { int Weight; Huffman...原创 2019-02-21 16:24:54 · 167 阅读 · 0 评论 -
【数据结构】堆
堆的两个特性结构性:用数组表示的完全二叉树; 有序性:任一结点的关键字是其子树所有结点的最大值(最小值)“最大堆(MaxHeap)”,也称“大顶堆”:最大值 “最小堆(MinHeap)”,也称“小顶堆”:最小值堆的抽象数据类型描述类型名称:最大堆(MaxHeap) 数据对象集:完全二叉树,每个结点的元素值不小于其子节点的元素值 操作集:最大堆HMaxHeap,元素itemEle...原创 2019-02-21 15:23:18 · 144 阅读 · 0 评论 -
【数据结构】队列
队列:具有一定操作约束的线性表。(只能在一段插入,在另一端删除)1、Queue CreatQueue(int MaxSize); //生成长度为MaxSize的空队列;2、int IsFullQ(Queue Q,int MaxSize); //判断队列Q是否已满;3、void AddQ(Queue Q,ElementType item); //将数据元素ite...原创 2019-02-08 10:22:31 · 127 阅读 · 0 评论 -
【数据结构】二分法查找
二分法查找:Position BinarySearch(List L, ElementType X){ Position Left, Right, Mid; Left = 1; Right = L->Last; while(Left <= Right){ Mid = (Left + Right) / 2; i...原创 2019-02-02 20:04:15 · 189 阅读 · 0 评论 -
【数据结构】将一段链表分段并逆转连接
将一段链表分段并逆转连接:Node* Option(Node* L,int K,int Size){ int i=0; Node* List[Size/K+1]; int cnt=0; Node* t1; int j; int flag=0; Node* tr; t1=L->link; Lis...原创 2019-02-02 20:03:54 · 971 阅读 · 0 评论 -
【数据结构】将一段链表逆转
逆转一段链表:Node* Invert(Node* L){ ///逆转一段链表 Node *p,*q,*r; p=L; q=NULL; while(p!=NULL){ r=q; q=p; p=p->link; q->link=r; } return q;}...原创 2019-02-02 20:04:05 · 187 阅读 · 0 评论 -
【数据结构】将中缀表达式转化为后缀表达式
一、首先是将中缀表达式转换成后缀表达式的方法:1、遇到操作数:直接输出(添加到后缀表达式中)2、栈为空时,遇到运算符,直接入栈3、遇到左括号:将其入栈4、遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出5、遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6、最终将栈中的元素依次出栈,输出//实现...转载 2019-03-15 00:44:31 · 1086 阅读 · 0 评论