
数据结构
L-75
这个作者很懒,什么都没留下…
展开
-
约瑟夫问题(数到3出局)----链表操作
n个人排成一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针“一二三”报数,报到3的人退出圈子。这样不断循环下去,圈子里的人将不断减少。求出最后剩下的人是第几个人。之前用数组写的,现在用循环链表操作写一下:#include #include typedef struct LNode{ int data; struct LNode *next; }LNode,*Li原创 2015-09-27 09:57:15 · 1765 阅读 · 0 评论 -
二叉排序树的基本操作(建立,中序遍历,查找,删除,插入)
分析:二叉排序树的操作的难点在于删除操作,删除操作时,只需要满足二叉排序树的性质即可,即需要找到要删除结点p的左孩子的最右下方的数替代该结点的数据,然后删除p->lchild的最右下方的结点即可。对于p->lchild==NULL的,只需要让双亲结点直接指向p->rchild即可(对于根节点,只需要改变头指针)。对于p->lchild没有右子树的,让删除结点左孩子的数据赋值到删除结点上原创 2015-11-28 20:50:23 · 9629 阅读 · 5 评论 -
2路归并排序(MERGE_SORT)
简述:我用的循环输入测试,输出Ctrl+z结束,输入随机产生数的个数,然后观察结果。代码如下:#include #include #include void Merge_Sort(int *a,int low,int mid,int high){ if(low>=high) return; int i,j,k; int b[105]; i=low;原创 2015-12-15 20:17:54 · 1084 阅读 · 0 评论 -
学生成绩排序(直接插入,冒泡,快排,选择,堆排,2路归并)
内容:给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作:(1)设计一个显示对学生信息操作的菜单函数如下所示:************************* 1、录入学生基本信息 2、直接插入排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序原创 2015-12-16 21:14:41 · 13132 阅读 · 4 评论 -
最小生成树(Prim算法)
要求:输入一个图,求出最小生成树。输出最小生成树的边。Prim算法代码:#include typedef struct graph{ int vexnum,arcnum; int edge[100][100];}Graph;struct edge{ int adjvex; int lowcost;}closedge[105];void Prim(Graph原创 2015-11-29 18:39:50 · 1284 阅读 · 0 评论 -
HDU 2544 最短路
最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 48091 Accepted Submission(s): 21187Problem Description在每年的校赛里,所有进入决赛的同学都会获原创 2016-03-06 09:13:10 · 357 阅读 · 0 评论 -
图的邻接表的遍历(DFS(递归,非递归),BFS,拓扑排序)
要求:对有向图进行DFS(深度优先遍历)和BFS(广度优先遍历)。写出深度优先遍历的递归和非递归算法。代码如下:#include #include #include #include #include #define MAX 100using namespace std;int visited[MAX+1]; //记录是否访问过 typedef struct node原创 2015-11-03 23:45:55 · 5260 阅读 · 4 评论 -
蓝桥杯第五届省赛C/C++A组第五题 锦标赛
标题:锦标赛如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。如图【1.png】所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼…直到决出第一名。第一名输出后,只要对黄色标示的位置重新比赛即可。下面的代码实现了这个算法(假设数据中没有相同值)。代码中需要用一个数组来表示图中的树(注意,这是个满二叉树原创 2017-04-07 20:16:26 · 510 阅读 · 0 评论 -
HDU 2545 树上战争(求树的高度)
树上战争Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1051 Accepted Submission(s): 594Problem Description给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,lxh原创 2017-03-16 19:53:27 · 471 阅读 · 0 评论 -
线性表的查找操作(线性表的顺序查找、二分查找、分块查找)
内容:(1)随机产生n个两位整数,构造一个查找表。(2)输入一个整数,利用顺序查找法在查找表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。(3)对查找表按递增顺序进行排序。(4)输入一个整数,利用折半查找法在有序表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。(5)输入整组数无序,但局部有序的一组整数,建立查找表,输入原创 2015-11-27 19:48:57 · 8491 阅读 · 0 评论 -
栈的应用--十进制转n进制(基础版)
要求:输入一个十进制数,利用栈操作,将该数转换成n进制数。因为写数据结构,所有写成了一个个函数的模块,其实用不了这么长的。#include typedef struct { int base[1000]; int top; int strcksize;}Strck;int StrckEmpty(Strck S){ if(S.top==0) return 1;原创 2015-09-24 10:26:48 · 2681 阅读 · 0 评论 -
舞伴配对问题---队列的应用
循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。#include #incl原创 2015-09-29 20:47:49 · 13275 阅读 · 2 评论 -
二叉树的非递归遍历操作
要求:输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的非递归算法。写出对用二叉链表存储的二叉树进行层次遍历算法。思路:在这里只介绍下后序遍历的非递归算法。后序遍历要先访问左子树,再访问右子树,最后访问根节点。如果左右子树为空,则遍历根节点;如果左右子树访问完了,原创 2015-11-06 00:22:01 · 738 阅读 · 0 评论 -
单链表操作的实验课
单链表的操作① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。② 实现该线性表的遍历。③ 在该单链表的第i个元素前插入一个整数。④ 删除该单链表中的第i个元素,其值通过参数将其返回。⑤ 建立两个按值递增有序的单链表,将他们合并成一个按值递减有序的单链表。要求利用原来//链表的建立,插入,删除 ,合并链表;#include #include typedef原创 2015-09-20 00:43:19 · 699 阅读 · 0 评论 -
哈夫曼编码
#include #include #include typedef struct tree{ int parent,lchild,rchild; int weight;}HNode,*HTree;void Selete(HTree HT,int n,int &s1,int &s2){ int i; int min1=1000000,min2=1000000; for(i原创 2015-11-10 20:25:17 · 619 阅读 · 0 评论 -
图的基本操作
图数据结构的建立、图的DFS遍历和BFS遍历/*测试数据:8 9ABCDEFGHA BB DB EE HD HA CC FC GF G*/#include #include #include #define MAX 20using namespace std;int visit[MAX+1]={0};typedef struct { char vexs原创 2015-10-26 21:40:32 · 1650 阅读 · 0 评论 -
括号匹配---栈的应用
输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。//括号匹配 #include #include typedef struct Strck{ char base[200]; int top; int Strcksize;}Strck;void InitStrck(Strck &S){ S.Strcksize=200; S.t原创 2015-09-29 15:11:01 · 589 阅读 · 0 评论 -
栈的基本操作
#include typedef struct stack{ int top; int base[100]; int stacksize;}Stack;void InitStack(Stack &S){//建立一个栈 S.top=0; S.stacksize=100;}int StackEmpty(Stack S){//栈的判空操作 if(S.top==0)原创 2015-09-24 07:36:36 · 542 阅读 · 0 评论 -
poj 2418 Hardwood Species(字典树)
Hardwood SpeciesDescriptionHardwoods are the botanical group of trees that have broad leaves, produce a fruit or nut, and generally go dormant in the winter. America’s temperate climates produce fore原创 2017-05-03 21:30:53 · 525 阅读 · 0 评论