![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 60
wzh_scuec
这个作者很懒,什么都没留下…
展开
-
图:图的概念
图:图的概念图的定义图(Graph)G由顶点集合V(G)和边集合(G)构成说明:对于n个顶点的图,对每个顶点连续编号,即顶点的编号为0~n-1。通过编号唯一确定一个顶点图抽象数据结构类型 = 逻辑结构 + 基本运算(运算描述)图的基本运算如下:InitGraph(&g):图初始化ClaerGraph(&g):销毁图DFS(G,v):从顶点v出发深度优先遍历BFS(G,v):从顶点v出发广度优先遍历在图G中,如果代表边的顶点对是无序的,则称G为无向图。用圆括号序偶表示原创 2021-07-22 13:30:16 · 293 阅读 · 0 评论 -
树和二叉树:二叉树的构造
树和二叉树:二叉树的构造回顾同一棵二叉树(假设每个节点值唯一)具有唯一先序序列,中序序列和后序序列但不同的二叉树可能具有相同的先序序列,中序序列或后序序列例如:以下命题成立否?同时给定一棵二叉树的先序序列和中序序列就能唯一确定这棵二叉树。(正确)同时给定一棵二叉树的中序序列和后序序列就能唯一确定这棵二叉树。(正确)同时给定一棵二叉树的先序序列和后序序列就能唯一确定这棵二叉树。(错误)定理1: 任何n(n>0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一地确定由先序和原创 2021-06-20 16:13:09 · 1406 阅读 · 1 评论 -
树和二叉树:二叉树遍历的应用
树和二叉树:二叉树遍历的应用二叉树3种递归遍历算法的应用例题:假设二叉树采用二叉链存储结构存储,设计一个算法,计算一棵给定二叉树的所有节点个数解:计算一棵二叉树b中所有节点个数的递归模型f(b)如下:对应的递归算法如下:int Nodes(BTNode *b) { int num1,num2; if(b==NULL) return 0; else return Node(b->lchild)+Node(b->rchild)+1;} //先左子树,再右子树,最后根节原创 2021-06-11 17:44:14 · 230 阅读 · 1 评论 -
树和二叉树:二叉树的遍历
树和二叉树:二叉树的遍历二叉树遍历的概念二叉树的遍历是指按照一定次序访问树中所有节点,并且每个节点仅被访问一次的过程遍历是二叉树最基本的运算,是二叉树中其他运算的基础二叉树的组成:1.先序遍历过程先序遍历NLR二叉树的过程是:访问根节点;先序遍历左子树;先序遍历右子树;二叉树先序遍历演示先序遍历序列:A B D G C E F (遍历完毕)先序序列的第一个节点是根节点2.中序遍历过程中序遍历LNR二叉树的过程是:中序遍历左子树;访问根节点;中序遍历右子树;原创 2021-06-07 08:17:38 · 775 阅读 · 0 评论 -
树和二叉树:二叉树基本运算及其实现
树和二叉树基本运算及其实现二叉树的基本运算概述归纳起来,二叉树有以下基本运算:创建二叉树CreateBTNode(*b, *str):根据二叉树括号表示法字符串str生成对应的二叉链存储结构b销毁二叉链存储结构DestroyBT(*b):销毁二叉链b并释放空间查找节点FindNode(*b,x):在二叉树b中寻找data域值为x的节点,并返回指向该节点的指针找孩子节点LchildNode( p) 和RchildNode( p):分别求二叉树中节点*p的左孩子节点和右孩子节点求高度BTNode原创 2021-06-02 20:07:00 · 4101 阅读 · 0 评论 -
树和二叉树:二叉树的存储结构
树和二叉树:二叉树的存储结构二叉树的顺序存储结构回顾二叉树的性质4,完全二叉树节点按层序编号:完全二叉树的顺序存储结构非完全二叉树的顺序存储结构二叉树顺序存储结构的特点:对于完全二叉树来说,其顺序存储是十分合适的对于一般的二叉树,特别是对于那些单分支节点较多的二叉树来说是很不合适的,因为可能只有少数存储单元被利用,特别是对退化的二叉树(即每个分支节点都是单分支的),空间浪费更是惊人在顺序存储结构中,找一个节点的双亲和孩子都很容易二叉树的链式存储结构借鉴树的孩子链存储结构 - 二原创 2021-06-02 16:53:05 · 2237 阅读 · 0 评论 -
树和二叉树:二叉树的概念
树和二叉树:二叉树的概念二叉树的定义二叉树是有限的节点集合(递归定义)这个集合或者是空或者由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成二叉树的5种基本形态:二叉树是可以采用树的逻辑结构表示法,其4种表示法如下:树形表示法文氏图表示法凹入表示法括号表示法二叉树和2次树有什么区别?度不同度为2的树要求每个节点最多只能有两棵子树,并且至少有一个节点有两棵子树。二叉树的要求是度不超过2,节点最多有两个叉,可以是1或者0分支不同度为2的树有两个分支,但分支没有左原创 2021-05-29 17:28:27 · 1678 阅读 · 0 评论 -
树和二叉树:树的运算和存储结构
树的运算和存储结构树的基本运算树的运算主要分为三大类:查找满足某种特定关系的节点,如查找当前节点的双亲节点等插入和删除某个节点,如在树的当前节点上插入一个新节点或删除当前节点的第i个孩子节点等遍历树中每个节点树的遍历树的遍历运算是指按某种方式访问树中的每一个节点且每一个节点只被访问一次主要的遍历方法:(1)先根遍历:若树不空,则先访问根节点,然后依次先遍历各棵子树(2)后根遍历:若树不空,则先依次后根遍历各棵子树,然后访问根节点(3)层次遍历:若树不空,则自上而下,自左至右访原创 2021-05-27 13:14:25 · 789 阅读 · 1 评论 -
队列(queue)和栈(stack)
队列(queue)和栈(stack)队列queue队列(queue)是一种先进先出FIFO(first in first out)的线性表。它只允许在表的一端进行插入元素,而在另一端删除元素,最早进入队列的元素最早离开。在队列中,插入的一段称为队尾(back),删除的一段称为队头(front)队列定义在< queue >头文件中队列类成员函数原型如下://----容量capacity----bool empty(); //测试是否为空队列size_type size(); //返回原创 2021-05-24 16:45:21 · 593 阅读 · 0 评论 -
列表list
列表list列表的使用list是一个双向链表,因此它的内存空间是可以不连续的,通过指针来进行数据的访问,这使得list的随机访问效率比较低,因此list没有提供[]运算符的重载。但list可以很好的支持任意地方的插入和删除操作,只需要移动指针即可列表定义在< list >头文件中列表类成员函数原型如下://----迭代器iterators----iterator begin(); //返回表头元素为迭代器起始iterator end(); //返回表尾元素为迭代器结束revers原创 2021-05-23 17:19:30 · 121 阅读 · 0 评论 -
向量vector
向量vector向量的使用迭代器(iterator) 是一种允许检查容器内元素,并实现元素遍历的数据类型。迭代器提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,只有少数容器支持下标操作。因为迭代器对所有的容器都适用,现代C++程序更倾向于使用迭代器而不是下标操作访问容器元素向量vector是C++标准模板库中的内容。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小使用向量,需要在程序中添加<原创 2021-05-17 13:08:27 · 242 阅读 · 0 评论 -
树和二叉树:树的概念
树的概念树的定义树形式化定义: T={D,R} D是包含n个节点的有限集合(n>=0)。当n=0时,该树为空树,否则关系R满足以下条件:有且仅有一个节点d属于D,它对于关系R来说没有前趋节点,节点d称作树的根节点除根节点外,每个节点有且仅有一个前趋节点D中每个节点可以有零个或多个后继节点树的递归定义: 树...原创 2021-04-22 13:07:19 · 527 阅读 · 0 评论 -
选择排序
选择排序选择排序法(selection sort)的基本思想是第i趟选择排序通过n-i 次关键码的比较,从n-i+1个记录中选出关键码最小的记录,并和 第i个记录进行交换。设由A[1]~A[n]组成的n个数据,选择排序的 过程可以描述为:案例代码如下:#include<iostream>#include<ctime>#include<cstdlib>using namespace std;void SelectionSort(int A[],int n)原创 2021-01-19 20:42:07 · 64 阅读 · 0 评论 -
二分查找法
二分查找法二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。它的基本思想是: 升序排列的n个元素集合A分成个数大致相同的两部分,取A[n/2]与 欲查找的find作比较,如果相等则表示找到find,算法终止。如果 find<A[n/2],则在A的前半部继续搜索find,如果find>A[n/2],则 在A的后半部继续搜索find话不多说,来看代码:#include<iostre原创 2021-01-20 15:51:22 · 68 阅读 · 0 评论