数据结构与算法
蚂蚁的希望
CSDN说我人很懒,什么都没有写
展开
-
二叉树(先、中、后、层次遍历,判断同构和是否为完全二叉树)
二叉树二叉树的结构定义二叉树的创建(递归)访问节点先序遍历中序遍历后序遍历判断一颗二叉树是否为完全二叉树二叉树的结构定义typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild, *parent;}BiTNode, *BiTree;二叉树的创建(递归)#include <malloc.h...原创 2018-11-11 15:55:23 · 468 阅读 · 0 评论 -
大数乘法
简介我们知道使用编程语言中进行乘法运算的范围是有限的,因为数字的表示int,float,double等是有限的,如果要进行运算的范围超过了这些,如几十位,百位,千位,那么是无法运算的。大数相乘在小学的时候学习过竖式运算,例: 123 x 25 ---------- 615 + 24...原创 2019-03-12 12:08:59 · 195 阅读 · 0 评论 -
折半插入排序
简介待排序列L[1…n]中,执行如下操作:查找出L(i)在L[1…i-1]中的插入位置k将L[k…i-1]中的所有元素向后移动一个位置将L(i)复制到L(k)时间复杂度:最好情况:O(n)平均情况:O(n2)最坏情况:O(n2)空间复杂度: O(1)是否稳定:是与直接插入的区别:折半插入是先进行查找待排数的位置,再将其待插入元素后面的元素进行统一移动;而直接插入是...原创 2019-03-11 11:27:20 · 1235 阅读 · 0 评论 -
直接插入排序
简介待排序列L[1…n]中,执行如下操作:查找出L(i)在L[1…i-1]中的插入位置k将L[k…i-1]中的所有元素向后移动一个位置将L(i)复制到L(k)时间复杂度:最好情况:O(n)平均情况:O(n2)最坏情况:O(n2)空间复杂度: O(1)是否稳定:是代码#include <iostream>using namespace std;vo...原创 2019-03-11 10:36:15 · 87 阅读 · 0 评论 -
快速排序
简介在待排序序列L[1…n]任取一个元素povit作为基准,通过一趟排序将待排序表划分为独立的两个部分L[1…k-1]和[k+1…n],使得L[1…k-1]中的每一个元素小于povit,L[k+1…n]中的每一个元素大于povit,povit放在了其最终的位置L(k)中,这个过程为一趟排序。而后分别递归的对两个子表重复,直到没部分只有一个元素或为空,即所有元素都放在了最终位置。时间复杂度:...原创 2019-03-11 09:26:08 · 90 阅读 · 0 评论 -
二叉树(C++)
简介采用面向对象的方法创建二叉树代码#include <iostream>using namespace std;template<class T>struct BiNode{ T data; BiNode<T>* left; BiNode<T>* right; BiNode(const T&...原创 2019-03-08 20:50:47 · 248 阅读 · 0 评论 -
堆的基本操作
堆的基本操作(创建大根堆,插入,删除及排序)#include &lt;iostream&gt;using namespace std;//将元素key向下调整void AdjustDown(int heap[], int top, int len){ heap[0]=heap[top]; for(int i=2*top; i&lt;=len; i*=2) {...原创 2018-12-06 16:03:47 · 164 阅读 · 0 评论 -
判断一个图是否连通
判断一个图是否连通从图中的任意一个顶点开始进行深度优先遍历搜索,如图中所有点都可以遍历到,即只有一个连通分量,则说明这个图连通图的定义及基本操作请参考: 邻接表表示图(有向、无向图)及广度、深度遍历).bool visited[MaxVertexNum]; //访问标记数组//从顶点v出发,采用递归,深度遍历图Gvoid DFS(ALGraph G, int v){...原创 2018-11-23 22:02:37 · 23753 阅读 · 0 评论 -
邻接表表示图(有向、无向图)及广度、深度遍历)
原创 2018-11-21 19:21:41 · 4321 阅读 · 0 评论 -
算术表达式转换为以二叉树的结构存储
算术表达式转换为以二叉树的结构存储#include <iostream>#include <malloc.h>using namespace std;typedef struct BiTNode{ char data; BiTNode *lchild, *rchild;}BiTNode, *BiTree;/**afa:指向表达式字符串的...原创 2018-11-18 19:39:31 · 1661 阅读 · 0 评论 -
中序遍历线索二叉树
中序遍历线索二叉树的实现与操作二叉线索树的结构定义创建一棵二叉树创建一棵二叉树及二叉树基本操作中序遍历二叉树线索化的递归算法通过中序遍历建立中序线索二叉树中序遍历主函数测试二叉线索树的结构定义typedef enum{Link, Thread}PointerTag;typedef struct ThreadNode{ char data; ThreadNode *lchil...原创 2018-11-18 19:35:41 · 1746 阅读 · 0 评论 -
二叉排序树(BST)基本操作
二叉排序树(BST)基本操作二叉树的结构定义二叉排序树的插入创造二叉排序树判断一颗树是否为BST二叉树的结构定义typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild, *parent;}BiTNode, *BiTree;二叉排序树的插入int BST_Insert(BiTree &...原创 2018-11-11 21:11:12 · 542 阅读 · 0 评论 -
选择排序
简介首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。时间复杂度:最好情况:O(n2)平均情况:O(n2)最坏情况:O(n2)空间复杂度: O(1)是否稳定:否代码#include <bits/stdc++.h>using namespa...原创 2019-04-01 15:08:11 · 92 阅读 · 0 评论