
数据结构与算法
程序员的资料库
程序员的资料库
展开
-
数据结构与算法 第11部分:排序
1:直接插入排序算法步骤:1)设待排度的记录存储在数组r[1...n]中,可以把第一个记录r[1]看作一个有序序列。2)依次将r[i](i = 2,…,n)插入到已经排好序的序列r[1..i - 1]中,并保持有序性。void StraightInsertSort(int r[],int n) //直接插入排序{ for (int nIndex = 2; nIndex <...原创 2020-03-03 17:28:07 · 525 阅读 · 0 评论 -
数据结构与算法 第10部分:平衡二叉树
1:平衡二叉树定义typedef struct AVLNode{ int data; int height; struct AVLNode *lchild; struct AVLNode *rchild;}*AVLTree;2:删除树AVLTree Empty(AVLTree &T)//删除树{ if (nullptr == T) { r...原创 2020-03-03 16:07:11 · 313 阅读 · 0 评论 -
数据结构与算法 第09部分:二叉搜索树
1:二叉排序树结点定义#define ENDFLAG -1typedef int ElemType;typedef struct BSTNode{ ElemType data; //结点数据域 BSTNode *lchild,*rchild; //左右孩子指针}BSTNode,*BSTree;2:二叉排序树的递归查找BSTree SearchBST(BSTree T,E...原创 2020-03-03 15:57:57 · 647 阅读 · 0 评论 -
数据结构与算法 第08部分:查找
1:顺序查找int SqSearch(int r[],int n,int x)//顺序查找{ for (int nIndex = 0; nIndex < n; nIndex++) //要判断i是否超过范围n { if (r[nIndex] == x) //r[i]和x比较 { return nIndex;//返回下标 } } retur...原创 2020-03-03 15:12:13 · 232 阅读 · 0 评论 -
数据结构与算法 第07部分:图的存储(邻接表)
1:创建有向图的邻接表(定义)const int MaxVnum=100;//顶点数最大值typedef char VexType;//顶点的数据类型为字符型typedef struct AdjNode{ //定义邻接点类型 int v; //邻接点下标 struct AdjNode *next; //指向下一个邻接点}AdjNode;typedef struct VexNo...原创 2020-03-03 14:24:43 · 542 阅读 · 0 评论 -
数据结构与算法 第07部分:图的存储(邻接矩阵)
1:邻接矩阵创建无向图(定义)#define MaxVnum 100 //顶点数最大值typedef char VexType; //顶点的数据类型,根据需要定义typedef int EdgeType; //边上权值的数据类型,若不带权值的图,则为0或1typedef struct{ VexType Vex[MaxVnum]; EdgeType Edge[MaxVnum][...原创 2020-03-03 14:04:50 · 380 阅读 · 0 评论 -
数据结构与算法 第06部分:二叉树
1:定义二叉树存储结构typedef struct Bnode /*定义二叉树存储结构*/{ char data; struct Bnode *lchild,*rchild;}Bnode,*Btree;2:按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树Tvoid Createt...原创 2020-03-02 15:13:51 · 434 阅读 · 0 评论 -
数据结构与算法 第04部分:字符串
1:求子串:暴力穷举(Brute Force)模式匹配:子串的定位运算称为串的模式匹配或串匹配。假设有两个串S,T,设S为主串"asfheiufhre",T为子串"eiu".在主串S中查找与模式T相匹配的子串,如果查找成功,返回匹配的子串第一个字符在主串中的位置。//最笨的办法就是穷举所有S的所有子串,判断是否与r匹配。该算法称为BF(Brute Force)int BF(stri...原创 2020-03-02 14:57:06 · 301 阅读 · 0 评论 -
数据结构与算法 第03部分:栈与队列(队列)
1:队列定义#define Maxsize 100typedef struct SqQueue{ int *pBase; //基地址 int nFront,nRear; //头指针,尾指针}SqQueue;2:循环队列的初始化//循环队列的初始化bool InitQueue(SqQueue &Q)//注意使用引用参数,否则出了函数,其改变无效{ Q.p...原创 2020-03-02 13:26:03 · 245 阅读 · 0 评论 -
数据结构与算法 第03部分:栈与队列(栈)
1:栈定义#define Maxsize 100 //预先分配空间,这个数值根据实际需要预估确定;typedef struct SqStack { int *pBase; //栈底指针 int *pTop; //栈顶指针}SqStack;2:构造一个空栈Sbool InitStack(SqStack &S) //构造一个空栈S{ S.pBase = new ...原创 2020-03-02 13:15:22 · 325 阅读 · 0 评论 -
数据结构与算法 第02部分:线性表
1:结点定义typedef struct LNode { int data; //结点的数据域 struct LNode *next; //结点的指针域}LNode, *LinkList; //LinkList为指向结构体LNode的指针类型2:构造一个新的结点bool InitList_L(LinkList &LNew,int nData = 0)//构造一个新...原创 2020-03-02 10:42:28 · 281 阅读 · 0 评论 -
数据结构与算法 第01部分:算法基础
1:n的阶乘long long fac(int n){ if (n < 0) { return -1; } if (n == 0 || n == 1) { return 1; } return n * fac(n - 1); }2:斐波那契数列long long fib1(int n){ if (n < 1) {...原创 2020-03-02 10:10:42 · 316 阅读 · 0 评论