
数据结构
L-75
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
约瑟夫问题(数到3出局)----链表操作
n个人排成一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针“一二三”报数,报到3的人退出圈子。这样不断循环下去,圈子里的人将不断减少。求出最后剩下的人是第几个人。 之前用数组写的,现在用循环链表操作写一下: #include #include typedef struct LNode{ int data; struct LNode *next; }LNode,*Li原创 2015-09-27 09:57:15 · 1783 阅读 · 0 评论 -
二叉排序树的基本操作(建立,中序遍历,查找,删除,插入)
分析: 二叉排序树的操作的难点在于删除操作,删除操作时,只需要满足二叉排序树的性质即可,即需要找到要删除结点p的左孩子的最右下方的数替代该结点的数据,然后删除p->lchild的最右下方的结点即可。 对于p->lchild==NULL的,只需要让双亲结点直接指向p->rchild即可(对于根节点,只需要改变头指针)。 对于p->lchild没有右子树的,让删除结点左孩子的数据赋值到删除结点上原创 2015-11-28 20:50:23 · 9652 阅读 · 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 · 1098 阅读 · 0 评论 -
学生成绩排序(直接插入,冒泡,快排,选择,堆排,2路归并)
内容: 给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作: (1)设计一个显示对学生信息操作的菜单函数如下所示: ************************* 1、录入学生基本信息 2、直接插入排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序原创 2015-12-16 21:14:41 · 13211 阅读 · 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 · 1297 阅读 · 0 评论 -
HDU 2544 最短路
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 48091 Accepted Submission(s): 21187 Problem Description 在每年的校赛里,所有进入决赛的同学都会获原创 2016-03-06 09:13:10 · 365 阅读 · 0 评论 -
图的邻接表的遍历(DFS(递归,非递归),BFS,拓扑排序)
要求:对有向图进行DFS(深度优先遍历)和BFS(广度优先遍历)。写出深度优先遍历的递归和非递归算法。 代码如下: #include #include #include #include #include #define MAX 100 using namespace std; int visited[MAX+1]; //记录是否访问过 typedef struct node原创 2015-11-03 23:45:55 · 5276 阅读 · 4 评论 -
蓝桥杯第五届省赛C/C++A组第五题 锦标赛
标题:锦标赛如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。如图【1.png】所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼…直到决出第一名。第一名输出后,只要对黄色标示的位置重新比赛即可。下面的代码实现了这个算法(假设数据中没有相同值)。代码中需要用一个数组来表示图中的树(注意,这是个满二叉树原创 2017-04-07 20:16:26 · 530 阅读 · 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 · 488 阅读 · 0 评论 -
线性表的查找操作(线性表的顺序查找、二分查找、分块查找)
内容: (1)随机产生n个两位整数,构造一个查找表。 (2)输入一个整数,利用顺序查找法在查找表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。 (3)对查找表按递增顺序进行排序。 (4)输入一个整数,利用折半查找法在有序表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。 (5)输入整组数无序,但局部有序的一组整数,建立查找表,输入原创 2015-11-27 19:48:57 · 8526 阅读 · 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 · 2707 阅读 · 0 评论 -
舞伴配对问题---队列的应用
循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。 #include #incl原创 2015-09-29 20:47:49 · 13310 阅读 · 2 评论 -
二叉树的非递归遍历操作
要求: 输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。 写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的非递归算法。 写出对用二叉链表存储的二叉树进行层次遍历算法。 思路: 在这里只介绍下后序遍历的非递归算法。 后序遍历要先访问左子树,再访问右子树,最后访问根节点。如果左右子树为空,则遍历根节点;如果左右子树访问完了,原创 2015-11-06 00:22:01 · 750 阅读 · 0 评论 -
单链表操作的实验课
单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个按值递增有序的单链表,将他们合并成一个按值递减有序的单链表。要求利用原来 //链表的建立,插入,删除 ,合并链表; #include #include typedef原创 2015-09-20 00:43:19 · 709 阅读 · 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 · 631 阅读 · 0 评论 -
图的基本操作
图数据结构的建立、图的DFS遍历和BFS遍历 /*测试数据: 8 9 ABCDEFGH A B B D B E E H D H A C C F C G F G */ #include #include #include #define MAX 20 using namespace std; int visit[MAX+1]={0}; typedef struct { char vexs原创 2015-10-26 21:40:32 · 1664 阅读 · 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 · 605 阅读 · 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 · 558 阅读 · 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 · 541 阅读 · 0 评论