![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
gyh小桂子
这个作者很懒,什么都没留下…
展开
-
文件操作插入排序和快排
有时间再新解释#include<stdio.h>#include<string.h>#include<malloc.h> //直接插入排序 void InsertSort(int a[],int n){ int i,j; for(i=2;i<=n;i++) { if(a[i]<a[i-1]) { a[0]=a[i]; a[i]=a[i-1]; for(j=i-2;a[0]<a[j];--j) ..原创 2021-12-21 17:07:17 · 79 阅读 · 0 评论 -
数据结构归并排序结构体实现
2.1.思想归并排序就是将两个或两个以上的有序表合成一个有序表的过程,将两个有序表合并成一个有序表的过程为2-路归并。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列长度为1,然后两两归并,得到[n/2]个长度为2或1的有序子序列;再两两合并,......,如此重复,直到得到一个长度为n的有序序列为止。2.2.实例分析初始关键字序列:49 38 65 97 76 13 27进行第一次归并:[49 38] [65 97] [76 13] [27]一趟归并之后:[38...原创 2021-12-21 17:05:08 · 720 阅读 · 0 评论 -
顺序查找结构体实现
顺序查找的过程:从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,还未找到关键字和给定值相等的记录,则查找失败。首先了解顺序存储结构;typedef struct{ KeyType key;//关键字域 InfoType otherinfo;//其他域 }ElemType;typedef struct{ ElemType *R;//存储空间地址 int length;//当前长度 }SSTable;顺序查.原创 2021-12-07 22:43:34 · 416 阅读 · 0 评论 -
二分查找递归和非递归算法
折半查找也称二分查找,它是一种高效率的查找方法,但是使用的时候必须采用顺序存储结构,而且表中元素按关键字有序排列。查找过程:从表的中间开始,如果给定值和中间记录的关键字相等,则查找成功;如果给定值大于或者小于中间记录的关键值,则在表中大于或者小于中间记录的那一半中查找,这样重复操作,直到查找成功,或者在某一步查找区间为空,则代表查找失败。非递归算法#include<stdio.h>#include<iostream>using namespace std;int原创 2021-12-07 22:18:46 · 1000 阅读 · 0 评论 -
哈夫曼算法以及求哈夫曼编码
哈夫曼树又称最优树,是一类带权路径长度最短的树。其中带权路径长度WPL最小的二叉树称作最优二叉树或哈夫曼树。哈夫曼的构造算法:(1):根据给定的n个权值{w1,w2,w3.....},构造n课只有根节点的二叉树,这n棵二叉树构成一个森林F(2):在森林F中选取两棵根节点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根节点的权值为其左,右子树上根节点的权值之和(3):在森林F中删除这两棵树,同时又将新得到的二叉树加入F中。(4):重复(2)和(3),直到F只含一棵树为止,这原创 2021-12-07 13:38:41 · 3369 阅读 · 0 评论 -
十进制转换为八进制
利用栈来进行操作创建栈,初始化,入栈,出栈typedef struct{ int *base; int *top; int stacksize;}SqStack;//顺序栈初始化int IninStack(SqStack &S){ S.base=new int[MAXSIZE]; if(!S.base) return -1; S.top=S.base; S.stacksize=MAXSIZE; return 1;}//入栈int Push(SqStac.原创 2021-11-19 13:18:20 · 3699 阅读 · 0 评论 -
栈应用回文判断
#include <stdio.h>#include <string.h>#define maxsize 20//一号栈typedef struct { char data[maxsize]; int top1;} Stack_1;//二号栈typedef struct { char data[maxsize]; int top2;} Stack_2;//比较void judge() { Stack_1 sta1; .原创 2021-11-19 09:23:54 · 249 阅读 · 0 评论 -
单链表基本操作
/* Project: single linkeed list (数据结构 单链表) Date: 2021-10-7 09:26:57 Author: Frank Wang InitList(LinkList &L) 参数:单链表L 功能:初始化 时间复杂度 O(1) ListLength(LinkList L) 参数:单链表L 功能:获得单链表长度 时间复杂度O(n) ListInsert(LinkList &L,int i,Elem...原创 2021-11-12 14:01:43 · 459 阅读 · 0 评论 -
二叉树的先序,中序,后序遍历,深度计算
#include<stdio.h>#include<malloc.h>#include<iostream>using namespace std;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;//创建二叉树BiTree CreatBiTree(){ BiTree T; char c; ...原创 2021-11-09 21:18:17 · 958 阅读 · 0 评论 -
蛇形填数问题
蛇形填数 1 在 n*n 方阵里填入 1,2,3,…,n*n,要求填成蛇形例如 n=4 时方阵为: 源代码如下:#include<stdio.h>#include<iostream>using namespace std;const int N = 105;int a[N][N]={0};int main(){ int n,x,y,k; printf("请输入方阵的数:"); cin>>n; a[x...原创 2021-11-08 12:44:45 · 523 阅读 · 0 评论 -
KMB算法模式匹配
题目一:经典 KMP 算法判断 Description 给定两个字符串 string1 和 string2,判断 string2 是否为 string1 的子串。 Input 输入包含多组数据,每组测试数据包含两行,第一行代表 string1(长度小于 1000000),第二 行代表 string2(长度小于 1000000),string1 和 string2 中保证不出现空格。 Output 对于每组输入数据,若 string2 是 string1 的子串,则输出 strin原创 2021-11-07 22:02:25 · 453 阅读 · 0 评论 -
斐波纳契数列的递归和非递归实现
#include<stdio.h>#include<time.h>//diguilong Fib(int n){ if(n==1) return 1; else if(n==2) return 1; else return Fib(n-1)+Fib(n-2);}int main(){ int n; scanf("%d",&n); clock_t start_time,end_time;...原创 2021-11-05 21:45:28 · 79 阅读 · 0 评论 -
n的阶乘的递归实现
#include<stdio.h>#include<time.h>long jiecheng(int n){ if(n==0) return 1; else if(n==1) return 1; else return n*jiecheng(n-1);}int main(){ int n; scanf("%d",&n); int a; clock_t start_time,...原创 2021-11-05 21:40:29 · 72 阅读 · 0 评论