网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构答案打印版.docx

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
试卷参考答案 填空题 (1) N2 + 1 (2) 2N – 1 (3) 2 (4) 队空条件:front == rear 队满条件:(rear+1) % (m+1) == front 注:假设牺牲数组一个单元,只存放m 个元素 (6) 广度优先搜索 (8) 14 (9) 避免在插入和删除操作中将第一个结点看作是特殊结点,使程序编写简单。 基本思想如下: 存储结构:两个栈使用同一段内存空间,图示如下。栈1 只做 PUSH 操作,对应队列的进队;栈 2 只做 POP 操作,对应队列出队操作。 队列定义: typedef struct{ int data[M]; int Top1;//栈 1 指针int Top2;//栈 2 指针 }SqQueue; 队列初始化: SqQueue q; q.Top1= -1; q.Top2=0; 进队操作: if(q.Top1==M-1) printf(―队满!‖); else q.data[++q.top1]=e; 出队操作: if (q.Top2==q.Top1+1) printf(―队空!‖); else e=q.data[q. top2++]; 拓扑排序算法如下所示: void TopologicalSort(Graph g){ //有向图 g 采用邻接表存储结构 int indegree[MAX_VER];//定义各顶点入度数组 indegree[] int i,k,count; SqQueue q; node *p; FindIndegree(indegree,g);//求出所有顶点的入度 q=InitQueue();//建 0 入度顶点队列 q for(i=0;ig.vexnum;i++) if(!indegree[i]) q=EnQueue(q,i);//入度为 0 者进队列count=0;//对输出顶点计数 while(!QueueEmpty(q)) { q=DeQueue(q,k); printf(%3c,g.adjlist[k].vex); count++;//输出 k 号顶点并计数for(p=g.adjlist[k].firstarc;p;p=p-next) { }//while  }//for --indegree[p-no];//对 k 号顶点的每个邻接点的入度减 1 if(!indegree[p-no]) q=EnQueue(q,p-no);//若入度为 0 则进队列 if(countg.vexnum)//该有向图有回路printf(\nThere is a circuit.); }// TopologicalSort 对于有 n 个顶点,e 条边的有向图的拓扑排序算法的时间复杂性为O(n+e) 由于学号已经排好序,要求按学生成绩(总分)排名次,若总分相同,则学号在前的,仍排在前面,即要求选择的排序算法具有稳定性,分析具有稳定性的排序算法有如下4 种: 再从时间与空间去综合考虑,选择改进的冒泡排序好。算法如下: void bubble_sort(int a[],int n){ int t=0,done=0; int i,j; for(i=1;i=n-1!done;i++) { done=1; for(j=0;j=n-i-1;j++) if(a[j]a[j+1]) {done=0; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } 归并排序算法如下: void Merge(int b[],int a[],int i,int m,int n){ //将有序的 b[i..m]和 b[m+1..n]归并为有序的 a[i..n] int j,k; for(j=m+1,k=i;(i=m)(j=n);++k) { cmp++; if(b[i]b[j]) {a[k]=b[i++];change++;} else {a[k]=b[j++];change++;} } while(i=m) {a[k++]=b[i++];change++;}//将剩于的 b[i..m]复制到 a while(j=n) {a[k++]=b[j++];change++;}//将剩余的 b[j..n]复制到 a }// Merge void MSort(int a[],int c[],int s,int t){ //将 a[s..t]归并排序为 c[s..t] int m; int b[MAX]; if(s==t) c[s]=a[s]; else { } }// MSort m=(s+t)/2;//将 a[s..t]平分为 a[s..m]和 a[m+1..t] MSort(a,b,s,m);//递归地将 a[s..m]归并为有序的 b[s..m] MSort(a,b,m+1,t)

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档