
数据结构
文章平均质量分 84
Li_yy123
hi
展开
-
数据结构—快速排序模型
题目:有一个线性表L,假设元素类型ElemType为整型。设计一个程序,将所有小于等于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面。/*思路一:用pivot存放基准即L->data[0],用i和j分别指向顺序表L的第一个元素(i=0)和最后一个元素(j=L->length-1),当i<j时循环:从右向左扫描,找一个关键字小于等于pivot的d...原创 2016-05-03 18:38:12 · 813 阅读 · 0 评论 -
数据结构—基于广度优先遍历算法的应用
/*基于广度优先遍历算法的应用。假设图G采用邻接表存储:(1)求不带权无向连通图G中从顶点u到顶点v的一条最短路径;(2)求不带权无向连通图G中距离顶点v的最远的一个顶点。*/#include #include #include #define MAXV 50using namespace std;int visited[MAXV];//邻接表类型typedef stru原创 2016-06-08 15:23:34 · 977 阅读 · 0 评论 -
数据结构—基于深度优先遍历算法的应用
/*基于深度优先遍历算法的应用。假设图G采用邻接矩阵存储:(1)判断图G中从顶点u到v是否存在简单路径;(2)输出图G中从顶点u到v的一条简单路径(假设至少存在一条路径);(3)输出从图G中从顶点u到v的所有简单路径(假设至少存在一条路径);(4)输出从图G中从顶点u到v的长度为s的所有简单路径;(5)求图中通过某顶点k的所有简单回路(若存在)。*/#include #incl原创 2016-06-07 22:09:41 · 1273 阅读 · 0 评论 -
数据结构—图的邻接矩阵存储
/*邻接矩阵的基本操作。*/#include #include #include #define MAXV 50#define LIMITLESS 9999#define N 50using namespace std;typedef struct{ int no; //顶点编号 char info[20]; //顶点其他信息} Vertex原创 2016-06-02 20:17:44 · 693 阅读 · 0 评论 -
数据结构—哈夫曼树
/*哈夫曼树。*/#include #include #define M 2*N-1#define N 50typedef char ElemType;using namespace std;typedef struct{ char data; //节点值 double weight; //权值 int parent; //双亲节点原创 2016-06-01 21:32:27 · 974 阅读 · 1 评论 -
数据结构—二叉树的构造
/*假设二叉树的每个节点值为单个字符,且没有值相同的节点。(1)由先序和中序构造二叉树;(2)由中序和后序构造二叉树。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; //数据元素原创 2016-06-01 13:17:34 · 444 阅读 · 0 评论 -
数据结构—线索化二叉树(中序)
/*线索化二叉树。(1)中序线索化二叉树;(2)遍历线索化二叉树。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; int ltag,rtag; struct node原创 2016-06-01 17:57:21 · 1681 阅读 · 0 评论 -
数据结构—二叉链顺序存储结构
/*(1)设计一个算法,将二叉树的顺序存储结构转换成二叉链存储结构;(2)一棵具有n个节点的完全二叉树以顺序存储方式存储在数组中,构造该树的二叉链存储结构;(3)将一棵以二叉链方式存储的二叉树t按顺序方式存储到数组A中。*/#include #include #define MaxSize 11 //注意MaxSize直接为二叉树顺序存储的个数typedef char Elem原创 2016-06-01 14:39:10 · 2079 阅读 · 0 评论 -
数据结构—稀疏矩阵三元组基础及应用
/*假设n*n的稀疏矩阵A采用三元组表示,设计一个程序,实现如下功能:(1)生成程序中两个稀疏矩阵的三元组a和b;(2)输出a转置矩阵的三元组;(3)输出a+b的三元组;(4)输出ab的三元组。*/#include #define M 4#define N 4#define MaxSize 100 //矩阵中非零元素最多个数typedef int ElemT原创 2016-05-30 16:08:44 · 3234 阅读 · 0 评论 -
数据结构—KMP模板
/*编写一个程序,实现顺序串的各种模式匹配运算,并完成下面功能:(1)建立目标串s "abcabcdabcdeabcdefabcdefg"和模式串t "abcdeabcdefab";(2)采用简单匹配算法求t在s中的位置;(3)对模式串t求next数组值和nextval数组值;(4)采用KMP算法求t在s中的位置。*/#include <iostream>#inclu...原创 2016-04-17 19:06:00 · 610 阅读 · 0 评论 -
数据结构—图的存储—邻接表和邻接矩阵
/*邻接矩阵的基本操作。*/#include #include #include #define MAXV 50#define INF 32767 //INF表示∞typedef int InfoType;typedef int Vertex;using namespace std;//邻接矩阵类型typedef struct{ int no;原创 2016-06-06 15:29:15 · 1773 阅读 · 0 评论 -
数据结构—连通图的遍历—DFS和BFS
/*图的遍历。*/#include #include #include #define MAXV 50typedef int InfoType;using namespace std;//邻接表类型typedef struct ANode{ int adjvex; //该边的编号 struct ANode *nextarc; //指原创 2016-06-06 20:51:20 · 1229 阅读 · 0 评论 -
数据结构—非连通图的遍历
/*非连通图的遍历。*/#include #include #include #define MAXV 50typedef int InfoType;using namespace std;int visited[MAXV];//邻接表类型typedef struct ANode{ int adjvex; //该边的编号 struct原创 2016-06-06 21:36:10 · 2231 阅读 · 0 评论 -
数据结构—单链表—直接插入排序
有一个带头节点的单链表L(至少有一个数据节点),设计一个程序使其元素呈递增有序排列 。思路: 先构造一个只含有一个数据节点的有序表。然后扫描单链表L余下的节点*p(直到p为NULL为止),在有序表中通过比较找插入*p节点的前驱节点*pre,然后在*pre节点之后插入*p节点。#include <iostream>using namespace std;#i...原创 2016-05-03 20:45:53 · 7319 阅读 · 2 评论 -
数据结构—有序表—归并排序
假设有两个有序表LA和LB,设计一个程序,将它们合并成一个有序表LC(假设每个有序表中和两个有序表间均不存在重复元素)。要求不破坏原有表LA和LB。思路:二路归并算法:分别扫描LA和LB两个有序表,当两个有序表都没有扫描完时循环:比较LA、LB的当前元素,将其中较小的元素放入LC中,再从较小元素所在的有序表中取下一个元素。重复这个过程直到LA或LB比较完毕,最后将未比较完的有序表余下的...原创 2016-05-04 21:01:28 · 2096 阅读 · 0 评论 -
数据结构—约瑟夫问题
1、约瑟夫问题:约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。分析:(1)由于对于每个人只有死和活两种状态,因此可以用布朗型数组标记每个人的状态,可用true表示死,false表示活。(2)开始时每个人都是活的,所以数组初值全部赋为false。(3)模拟杀人...原创 2016-04-23 14:44:51 · 5457 阅读 · 0 评论 -
数据结构—顺序表—删除某个元素
/*假设一个线性表采用顺序表表示。设计一个程序,删除其中所有值为x的元素。要求算法的时间复杂度为(n),空间复杂度为O(1)。*/#include <iostream>#include <string.h>#include <malloc.h>#define MaxSize 100using namespace std;typedef int...原创 2016-05-03 17:47:33 · 10936 阅读 · 0 评论 -
数据结构—直接插入排序
/*直接插入排序: 待排序的元素放在数组R[0...n-1]中,排序过程中的某个时刻,R被划分成两个子区间R[0...i-1]和R[i...n-1], 其中前一个区间是已经排好序的有序区,后一个区间是当前未排好序的区间,即无序区。 直接插入排序的一趟操作是将当前无序区的开头元素R[i]插入到有序区的位置里,使R[0...i]变为新的有序区。 增量法。*/#i...原创 2017-04-07 14:00:22 · 793 阅读 · 0 评论 -
C++—航班查询系统
/********************************************设计并实现一个航班信息查询和检索系统。要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。航班信息表的样式如下: 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 CA1544 合肥 北京原创 2016-07-19 13:19:19 · 10098 阅读 · 5 评论 -
数据结构—哈夫曼编码应用
构造一棵哈夫曼树,输出对应的哈夫曼编码和平均查找长度。并用表7.8所示的数据进行验证。代码:#include #include #include #define M 2*N-1#define N 50typedef char ElemType;using namespace std;typedef struct{ char data[N]; //节点值原创 2016-06-13 16:21:52 · 4197 阅读 · 0 评论 -
数据结构—判断是否为完全二叉树
/*假设二叉树采用二叉链存储结构,设计一个算法判断一颗二叉树是否为完全二叉树。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; struct node *lchild; st原创 2016-05-29 14:27:00 · 1388 阅读 · 0 评论 -
数据结构—二叉树层次遍历
/*(1)二叉树的层次遍历;(2)假设二叉树采用二叉链存储结构,设计一个算法输出从根节点到每个叶子节点的路径的逆 (即求叶子节点及其所有祖先节点的序列)。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ El原创 2016-05-29 13:30:33 · 598 阅读 · 0 评论 -
数据结构—二叉树后序遍历求逆
/*假设二叉树采用二叉链存储结构,设计一个算法输出从根节点到每个叶子节点的路径的逆(即求叶子节点及其所有祖先节点的序列)。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; stru原创 2016-05-29 11:20:21 · 2207 阅读 · 0 评论 -
数据结构之双链表操作
/*编写一个程序,实现双链表的各种基本运算(假设双链表的元素类型为Char)。(1)初始化双链表h;(2)采用尾插法依次插入元素a,b,c,d,e;(3)输出双链表h;(4)输出双链表h长度;(5)判断双链表h是否为空;(6)输出双链表h的第3个元素;(7)输出元素a的位置;(8)在第4个元素位置上插入元素f;(9)输出双链表h;(10)删除h的第3个元素;(11)输出双链原创 2016-03-23 18:52:37 · 688 阅读 · 0 评论 -
数据结构-题目2
/*设从键盘输入一个整数序列a1,a2,...,an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,输入结束。要求将队列处理成环形队列,进队和出队操作单独编写算法,并在异常情况时(如队满)打印错误信息。*/#include #include #include #define MaxSize 100using namespace std;type原创 2016-04-04 10:32:03 · 1990 阅读 · 0 评论 -
数据结构-链队
/*编写一个程序,实现链队的各种基本运算(假设栈中元素类型为char)。并完成下面功能:(1)初始化链队q;(2)判断链队q是否非空;(3)依次进队元素a,b,c;(4)出队一个元素,并输出该元素;(5)输出队列q的元素个数;(6)依次进链队元素d,e,f;(7)输出链队q的元素个数;(8)输出出队序列;(9)释放链队。*/#include #include #inc原创 2016-04-04 10:31:00 · 1216 阅读 · 0 评论 -
数据结构-顺序环形队列
/*编写一个程序,实现顺序环形队列的各种基本运算(假设栈中元素类型为char)。并完成下面功能:(1)初始化队列q;(2)判断队列q是否非空;(3)依次进队元素a,b,c;(4)出队一个元素,并输出该元素;(5)输出队列q的元素个数;(6)依次进队列元素d,e,f;(7)输出队列q的元素个数;(8)输出出队序列;(9)释放队列。*/#include #include原创 2016-04-04 10:30:27 · 1113 阅读 · 0 评论 -
数据结构-链栈
/*编写一个程序,实现链栈(假设栈中元素类型为char)的各种基本运算。并完成下面功能:(1)初始化链栈s;(2)判断链栈s是否非空;(3)依次进链栈元素a,b,c,d,e;(4)判断链栈s是否非空;(5)输出链栈长度;(6)输出从栈顶到栈底元素;(7)输出出链栈序列;(8)判断链栈s是否非空;(9)释放链栈。*/#include #include #include原创 2016-04-04 10:29:53 · 1027 阅读 · 0 评论 -
数据结构-顺序栈
/*编写一个程序,实现顺序栈(假设栈中元素类型为char)的各种基本运算。并完成下面功能:(1)初始化栈s;(2)判断栈s是否非空;(3)依次进栈元素a,b,c,d,e;(4)判断栈s是否非空;(5)输出栈长度;(6)输出从栈顶到栈底元素;(7)输出出栈序列;(8)判断栈s是否非空;(9)释放栈。*/#include #include #include #inclu原创 2016-04-04 10:29:15 · 1476 阅读 · 0 评论 -
数据结构之顺序表操作
/*编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为Char)。(1)初始化顺序表L;(2)采用尾插法依次插入元素a,b,c,d,e;(3)输出顺性表L;(4)输出顺序表L长度;(5)判断顺序表L是否为空;(6)输出顺序表L的第3个元素;(7)输出元素a的位置;(8)在第4个元素位置上插入元素f;(9)输出顺序表L;(10)删除L的第3个元素;(11)输出顺序原创 2016-03-21 16:47:23 · 733 阅读 · 0 评论 -
判断“回文”
/*编写一个程序,判断一个字符串是否为"回文".*/#include #include using namespace std;bool isHuiwen(char *array){ int len=strlen(array); for(int i=0,j=len-1; i<j; i++,j--) { if(ar原创 2016-03-07 16:52:13 · 442 阅读 · 1 评论 -
各位之和
/*设计一个程序,计算任一输入的正整数的各位数字之和。*/#include #include #include using namespace std;int main(){ char s[10]; int a,b=0; cin>>a; sprintf(s,"%d",a); int len=strlen(原创 2016-03-07 16:50:05 · 431 阅读 · 0 评论 -
数据结构之单链表操作
/*编写一个程序,实现单链表的各种基本运算(假设单链表的元素类型为Char)。(1)初始化单链表h;(2)采用尾插法依次插入元素a,b,c,d,e;(3)输出单链表h;(4)输出单链表h长度;(5)判断单链表h是否为空;(6)输出单链表h的第3个元素;(7)输出元素a的位置;(8)在第4个元素位置上插入元素f;(9)输出单链表h;(10)删除h的第3个元素;(11)输出单链原创 2016-03-21 16:48:19 · 919 阅读 · 0 评论 -
数据结构-题目1
/*一个线性表L采用顺序存储结构,其中所有元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素。要求算法时间复杂度为O(n),空间复杂度为O(1)。*//*思路:扫描顺序表,重建表L。用k记录顺序表L中等于x到y之间的元素个数,一边扫描L,一边统计k值,并将不为x到y之间的元素前移k个位置,最后修改L的长度。*/#include #include #include原创 2016-03-27 21:09:54 · 1902 阅读 · 0 评论 -
数据结构—二叉树遍历—非递归算法
/*二叉树的遍历非递归算法。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; struct node *lchild; struct node *rchild;} BTNo原创 2016-05-29 10:59:44 · 556 阅读 · 0 评论 -
数据结构—二叉树练习—递归
/*以孩子兄弟链作为树的存储结构,编写一个求树高度的递归算法。递归模型:设f(t)为树t的高度: f(t)=0 若t==NULL f(t)=1 若t没有孩子节点 f(t)=MAX(f(p))+1 其他情况 (p为t的孩子)*/int TreeHeight(TSBNode *t){ TSBNode *p; int m,原创 2016-05-28 22:06:18 · 784 阅读 · 0 评论 -
数据结构—二叉树基本操作
/*二叉树的基本运算。用括号表示法表示二叉树。*/#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子节点原创 2016-05-28 13:31:43 · 494 阅读 · 0 评论 -
数据结构—文本串加密
/*一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:a b c d e f g h i j k l m n o p q r s t u v w x y zn g z q t c o b m u h e l k p d a w x f y i v r s j则字符串"encrypt"被加密为"tkzwsdf"。设计一个程序,将输入的文本串进行加密后输出,然后进行解密并输出。原创 2016-04-18 20:21:32 · 3021 阅读 · 0 评论 -
数据结构—链串
/*编写一个程序,实现链串的各种基本运算,并完成如下功能:(1)建立串:s="abcdefghefghijklmn"和串s1="xyz";(2)输出串s;(3)输出串的长度;(4)在串的第9个字符位置插入串s1而产生串s2;(5)输出串s2;(6)删除串s第2个字符开始的5个字符而产生串s2;(7)输出串s2;(8)将串s第2个字符开始的5个字符替换成串s1而产生s2;(9)输原创 2016-04-17 18:30:20 · 1299 阅读 · 0 评论 -
数据结构—顺序串
/*编写一个程序,实现顺序串的各种基本运算,并完成如下功能:(1)建立串:s="abcdefghefghijklmn"和串s1="xyz";(2)输出串s;(3)输出串的长度;(4)在串的第9个字符位置插入串s1而产生串s2;(5)输出串s2;(6)删除串s第2个字符开始的5个字符而产生串s2;(7)输出串s2;(8)将串s第2个字符开始的5个字符替换成串s1而产生s2;(9)原创 2016-04-17 17:23:13 · 1633 阅读 · 1 评论