![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构mooc,陈越
文章平均质量分 70
A_Little_Nut
这个作者很懒,什么都没留下…
展开
-
Insertion or Heap Sort(25 分)
7-14 Insertion or Heap Sort(25 分)According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort原创 2017-12-12 10:51:11 · 660 阅读 · 0 评论 -
Huffman codes
这个程序我花了不少时间,改改,找错误,放弃,重写。只能 说细节很多,感觉每个程序 都不是那么简单,需要自己 默默地付出许多。 #include#includeusing namespace std;#define maxsize 64struct node{int weight=-1;node* l=NULL;node* r=NULL;};using haf原创 2017-11-26 16:21:24 · 331 阅读 · 0 评论 -
Saving James Bond - Hard Version
#include#include#include#include#includeusing namespace std;#define Maxnodenum 101#define nolimitmax 100000int flag=0;//为了标志第一次拓展外层vector dist(Maxnodenum,nolimitmax);//为了记住跳到每个点的步数原创 2017-11-26 11:05:31 · 343 阅读 · 0 评论 -
六度空间
本来编程时,结果如下测试点提示结果耗时内存0sample 简单一条链答案正确2 ms372KB1不连通答案正确2 ms384KB2一般图答案正确2 ms372KB3最小N和M答案正确2 ms3原创 2017-11-26 09:23:04 · 1040 阅读 · 0 评论 -
Saving James Bond - Easy Version
#include#include #includeusing namespace std;#define MaxN 101int flag=0;vector visited(MaxN,0);struct node{int x;int y;};struct Gnode{int N;int D;node G[MaxN];};using G原创 2017-11-23 13:07:33 · 255 阅读 · 0 评论 -
列出连通集
#include#include#includeusing namespace std;#define maxvertexnum 10 #define weighttype int#define datatype string#define vertex intstruct graph{int Nv;//定点数 int Ne;//边数weighttype原创 2017-11-23 11:02:43 · 391 阅读 · 0 评论 -
File Transfer(25 分)
本题还可以做路径压缩等优化,本人并没有,请见陈 越老师详解#include#includeusing namespace std;struct node{int data;int parent=-1;};int size;int Find(vector &set,int data){int q=data-1;while(set[q].parent>0)原创 2017-11-20 20:55:15 · 420 阅读 · 0 评论 -
堆中的路径
#include#includeusing namespace std;#define MAXSIZE 1001#define Min -10001int H[MAXSIZE],size;void create(){size=0;H[0]=Min;}void Insert(int t){int i;for(i=++size;H[i/2]>t;i/=2原创 2017-11-20 18:36:00 · 276 阅读 · 0 评论 -
Complete Binary Search Tree
这道题就我所知道已经有两种解法了:第一种: 比较繁琐,我自己也是这么思考的,但实现过程太繁琐以及自己对递归的掌握不好,在编程中放弃了,结果看了陈越老师的思路竟然和我一样,可能这个思考过程更一般吧,利用了搜索树的 任意节点的左边的节点都小于该节点,右边节点都大于该节点以及已知节点数可知完整的二叉搜索树的结构来确定节点的;总的老说,思路简单,实现复杂;#include #include原创 2017-11-19 18:43:32 · 307 阅读 · 0 评论 -
Root of AVL Tree(25 分)
参考了www.dongjinbao.com觉得做法很巧妙,简洁。十分佩服!觉得自己还不能充分理解递归!!!!#includeusing namespace std;struct treenode{int data,h;treenode* left=NULL;treenode* right=NULL;};using tree=treenode*;int hei原创 2017-11-18 12:50:21 · 444 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树(25 分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤)和L,分别是每个序列插入元素的个数和需原创 2017-11-18 09:27:55 · 449 阅读 · 0 评论 -
03-树3 Tree Traversals Again(25 分)
用了一个enum顺利解决了问题#include#includeusing namespace std;enum State{return_from_left,return_from_right};struct treenode{int data;treenode* left;treenode* right;enum State state;};using原创 2017-11-16 21:05:12 · 238 阅读 · 0 评论 -
03-树2 List Leaves(25 分)
用的是层序遍历#include#include#include#include#define maxsize 10#define tree int #define Null -1using namespace std;int tag=1;struct treenode{int left;int right;}t[maxsize];tree t原创 2017-11-16 19:08:10 · 308 阅读 · 0 评论 -
Reversing Linked List
版本一:用链表的,但因为改变位置要遍历的原因,提交后时间超出;但功能完整#includeusing namespace std;struct link{int number;string begin;string end;link* next;};struct format{string first;int sum;int k; };us原创 2017-11-12 21:29:40 · 224 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算(20 分)(CPP)
#includeusing namespace std; struct PolyNode{int xishu;int cishu;PolyNode* Next;};using list=PolyNode*;list Read(){int n;cin>>n;list s=(list)malloc(sizeof(PolyNode));list m=s;原创 2017-11-12 09:25:44 · 414 阅读 · 0 评论 -
图4 哈利·波特的考试
#includeusing namespace std;#define Maxsize 101struct enode{int v1,v2;int weight;};using edge=enode*; struct graph{int Nv;int Ne;int G[Maxsize][Maxsize];};using Graph=graph*;原创 2017-11-27 18:18:23 · 293 阅读 · 0 评论 -
最大子列和问题
01-复杂度1 最大子列和问题(20 分)给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4原创 2017-11-27 18:21:22 · 278 阅读 · 0 评论 -
Maximum Subsequence Sum
01-复杂度2 Maximum Subsequence Sum(25 分)Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1≤i≤j原创 2017-11-27 18:23:28 · 252 阅读 · 0 评论 -
Insert or Merge(25 分)
7-13 Insert or Merge(25 分)According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort remove原创 2017-12-11 12:06:23 · 691 阅读 · 0 评论 -
Merge_sort
1.递归方法的归并排序;#includeusing namespace std;int size,flag=0;void Merge(long int data[],int l,int r,int rend,int temp[]){int n=rend-l+1;int lend=r-1;int s=l;while(lif(data[l]else temp[s原创 2017-12-08 19:56:00 · 229 阅读 · 0 评论 -
heap_sort
1.堆排序(可改良)利用堆来排序,关键是掌握如何把一个树调整成堆(下滤)#includeusing namespace std;int size,flag=0;void PercDown(long int data[],int t,int N){ int parent,child,temp;temp=data[t]原创 2017-12-08 19:49:57 · 317 阅读 · 0 评论 -
shell_sort
希尔排序(是插入排序的升级版,通过一次交换两个较远的数来消除不止一个逆序队)增量序列有希尔增量,Hibbard增量,sedgewick增量等等,据说sedgewick增量效果不错#includeusing namespace std;void shell_sort(long int data[],int N){long int IncrementSequence_Sedgewi原创 2017-12-08 19:41:04 · 236 阅读 · 0 评论 -
Insertion_sort
插入排序(联想扑克牌)#includeusing namespace std;void Insertion_sort1(long int data[],int N){int i,j;for( i=1;iint temp=data[i];for( j=i;j>0&&tempdata[j]=data[j-1];data[j]=temp;}}int m原创 2017-12-08 19:34:32 · 454 阅读 · 1 评论 -
Bubble_sort
1.简单的冒泡排序#includeusing namespace std;void Bubble_sort1(long int data[],int N){for(int i=0;ifor(int j=0;jif(data[j]>data[j+1]){int t=data[j];data[j]=data[j+1];data[j+1]=t;}}int原创 2017-12-08 19:31:38 · 374 阅读 · 0 评论 -
7-11 关键活动(30 分)
7-11 关键活动(30 分) 这题其实就是在How long does it take那道题上添加了一些操作。感觉不难,但是比较复杂,且输出格式刁钻,为此我用了一个链接矩阵作为图去保存那些关键路径。还有一个地方被卡了一下,就是多个终点时,他们的最晚开始时间不是他们自己本身,而是题目中最早结束时间的最大值,他们是相同的。容易想当然的以为各自的最晚开始时间就是本身的最早完成时间。原创 2017-12-04 18:07:23 · 1460 阅读 · 5 评论 -
How Long Does It Take
英文不是很好的我看了好久才知道什么意思其中我还 调试了一下, 因为没有考虑到多起点, 多终点的情况。考虑到就很简单啦。除此之外哦,还有就是如何验证图里是否有回路。在这里我用到的是,一个个记录去掉为0的节点,记录他们,直至没有入度为0的点,然后看看所有的点是否都被记录过,若存在既没有入度为0的点且还有点没被记录过,则存在回路。7-12 How Long Does It原创 2017-12-03 20:44:19 · 570 阅读 · 0 评论 -
7-10 公路村村通(30 分)
7-10 公路村村通(30 分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。原创 2017-12-03 15:53:45 · 626 阅读 · 0 评论 -
二叉搜索树的操作集
04-树7 二叉搜索树的操作集(30 分)本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );原创 2017-11-27 21:33:30 · 444 阅读 · 0 评论 -
02-线性结构1 两个有序链表序列的合并(15 分)
02-线性结构1 两个有序链表序列的合并(15 分)本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType原创 2017-11-27 21:31:48 · 255 阅读 · 0 评论 -
07-图6 旅游规划(25 分)
其实这题感觉用二维数组方便一些,但为了锻炼和熟悉建表所以选择了链表实现。07-图6 旅游规划(25 分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的原创 2017-11-27 21:29:08 · 396 阅读 · 0 评论 -
树的同构
03-树1 树的同构(25 分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的原创 2017-11-27 18:29:36 · 331 阅读 · 0 评论 -
线性结构4 Pop Sequence
02-线性结构4 Pop Sequence(25 分)Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., Nand pop randomly. You are supposed to tell if a given sequence of原创 2017-11-27 18:27:54 · 222 阅读 · 0 评论 -
7-13 统计工龄(排序)
7-13 统计工龄(20 分)给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。输入样例:81原创 2017-12-15 10:47:01 · 2151 阅读 · 0 评论