1、 /获取第i个顶点的入度并存于ID数组中IDvexnum; /用于存储各顶点的入度,vexnum为顶点数For(int i=0;i!=vexnum;+i) GetTotalID(i); /依次获取每个顶点的入度 If(IDi=0) EnQueue(i); /将入度为0 的顶点入队 For(int i=fristadj;=adjnum; IDi-=1; /将该顶点的邻接点的入度数减1While(!isEmpty() /将队列中各顶点依次退队并赋值给elemPrintf(elem); /输入拓扑排序序列5A:11 B:01010 C:0111 D:00 E:011111 F:10 G:0100 H
2、:0101应用及编程题unsigned int isBallanced(char* string) char brace; for(ihnt i=0;=strlen(string); if(stringi=|stringi=() push(stringi); switch(stringi) brace=pop(); case ): if(brace!= return 0; break; if(isEmpty() return 1; else return 0; 该算法的时间复杂度为O(n),空间复杂度为O(n);int total=0;int InOrderTraverse(bitree* t
3、) InOrderTraverse(t-lchild); if(t-data=x1) +total;x2) return total;rchild); return total;该算法为中序遍历,时间复杂度为O(n)二OO七年数据结构与算法分析试题答案 BCDBD由邻接矩阵可得该图为:顶点I=1I=2I=3I=4I=5I=6V210V350V430V540V610090VjV1V1,V2V1,V2,V4V1,V3V1,V2,V4,V5V1,V2,V4,V5,V6设N=2K,T(N)=T(N/2)+N即T(2K)=T(2K-1)+2K=T(2K-2)+2K-1+2K=T(20)+2K+2K-1+
4、2K-2+=2K+1-1=2*2logn-1=2n-1所以时间复杂度为O(2n-1)void InsertSort(int* array,int num) int i=num-1,j=1; while(j!=i) array0=arrayi; if(arrayi=j;-v) arrayv-1=arrayv; arrayv=array0; +j; -i;1 6 5 4 3 2 第二趟:1 2 6 5 4 3 第三趟:1 2 3 6 5 4 第四趟:1 2 3 4 6 5 第五趟:1 2 3 4 5 6应用编程题:void Delete(int* A,int length) for(int i=1
5、;=length; for(int j=i+1;j!+j) if(Ai=Aj) for(int k=j+1;+k) Ak-1=Ak;该算法的时间复杂度为O(n3)void Delete(int *A,int length) int i=0,j=0; for(; if(Aj!=Ai) Aj+1=Ai; length=j;二O一一年数据结构与算法分析试题答案ABDCC#define Size 100int stackSize=0;int top1=0,top2=Size-1;void push(int top,int elem) if(top1=top2) coutStack OverFlow!e
6、ndl; return ; switch(top) case top1: stacktop=elem; +top1; break; case top2: +top2; return ;void pop(int top,int elem) if(top1=Size) elem=stacktop; -top1;Func(1): 1Func(2): 1 4 1Func(3): 1 9 1Func(5): 1 4 1 25 1 4 1该算法的时间复杂度为O(n)101 B:00 C:111 D:10010 E:110 F:010 G:01111 H:100 I:0110深度优先遍历:V1 V2 V4
7、V5 V7 V8 V9 V6 V3广度优先遍历:V1 V2 V3 V4 V5 V6 V7 V8 V9应用编程题:int QuickSort() int i=0,j=8; while(i0&aj0) int tmp=ai; ai=aj; aj=tmp; +i,-j; if(ai -j;int sum(bitree* t) static int total; if(t=NULL) return 0; total+=t-data; sum(t-二O一二年数据结构与算法分析试题答案BBADA函数调用过程如下:模式串的next值:0 1 1 1 1 2V1 V2 V3 V6 V4 V5 V70010 B
8、:1101 C:11001 D:111 E:000 F:0011 G:10 H:01 I:110000 J:11001算法题int isSum(int *a,int n,int x) int i=0,j=n-1; if(ai+aj=x) if(ai+aj j-; return -1;int countHeight(BiTreeNode* root) if(!root-left&!right) int lHeight=countHeight(root-left); int rHeight=countheight(root- return lHeightrHeight?lHeight+1:rHeight+1;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1