欢迎来到天天文库
浏览记录
ID:59194497
大小:63.50 KB
页数:10页
时间:2020-09-10
《数据结构大题目.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、算法阅读题1.如图所示,利用同一循环向量空间实现两个队列,其类型Queue2定义如下:typedefstruct{DataTypedata[MaxSize];intfront[2],length[2];};Queue2对于i=0或1,front[i]和length[i]分别为第i个队列的头指针和长度域。请在空缺处填入合适的内容,实现第i个循环队列的入队操作。intEnQueue(Queue2*Q,inti,DataTypex){//若第i个队列不满,则元素x入队列,并返回1,否则返回0if(i<
2、0
3、
4、i>1)return0;if((1))return0;Q->data[(2)]=x;Q->length[(3)]++return1;}2.阅读下列函数algo,并回答问题。(1)假设整型数组A[1..8]中的元素依次为(3,8,9,1,7,4,2,6)。执行函数调用algo(A,8)时,外层while的循环体执行多少次?函数的返回值是多少?(2)简述函数algo(L,n)的功能。intalgo(intL[],intn){inti=0,j,s=1,t=n;while(i!=(n+1)/2){in
5、tx=L[s];i=s;j=t;while(i=x)j--;L[i]=L[j];while(i6、etemp;i=1;do{exchang=false;for(j=n;j>(1);j--)if(R[j]7、f(p→adjvex==j){G→adjlist[i].firstedge=p→next;free(p);}else{while(p→next→adjvex!=j&&p→next)____(1);if(p→next!=NULL){q=p→next;___(2)___;free(q);}}p=G→adjlist[j].firstedge;if(p→adjvex==i){G→adlist[j].firstedge=p→next;free(q);}else{while(p→next→adjvex!=i&&8、p→next)__(3);if(p→next!=NULL){q=p→next;(4);free(q);}}}5.阅读下列函数algo,并回答问题:(1)假设队列q中的元素为(2,4,5,7,8),其中“2”为队头元素。写出执行函数调用algo(&q)后的队列q;(2)简述算法algo的功能。voidalgo(Queue*Q){StackS;InitStack(&S);while(!QueueEmpty(Q))Push(&S,;DeQueue(Q));while(!StackEmpty(&S))EnQ9、ueue(Q,Pop(&S));}6.阅读下列函数F,并回答问题:(1)已知如图所示的二叉树以二叉链表作存储结构,rt为指向根结点的指针。写出执行函数调用F(rt)的输出结果。(2)说明函数F的功能。voidF(BinTreeT){StackS;if(T){InitStack(&S);Push(&S,NULL);while(T){printf("%c",T->data);if(T->rchild)Push(&S,T->rchild);if(T->lchild)T=T->lchild;elseT=Po10、p(&S);}}}7.以下函数中h是带头结点的双向循环链表的头指针(1)说明程序的功能;(2)当链表中结点数分另为1和6(不包括头结点时),请写出程序中while循环体的次数。intf(DlistNode*h){DlistNode*p,*q;intj=1;p=h->next;q=h->piror;while(p!=q&&p->piror!=q)if(p->data==q->data){p=p->next;q=q->prior;}elsej=0;returnj;}8.(
6、etemp;i=1;do{exchang=false;for(j=n;j>(1);j--)if(R[j]7、f(p→adjvex==j){G→adjlist[i].firstedge=p→next;free(p);}else{while(p→next→adjvex!=j&&p→next)____(1);if(p→next!=NULL){q=p→next;___(2)___;free(q);}}p=G→adjlist[j].firstedge;if(p→adjvex==i){G→adlist[j].firstedge=p→next;free(q);}else{while(p→next→adjvex!=i&&8、p→next)__(3);if(p→next!=NULL){q=p→next;(4);free(q);}}}5.阅读下列函数algo,并回答问题:(1)假设队列q中的元素为(2,4,5,7,8),其中“2”为队头元素。写出执行函数调用algo(&q)后的队列q;(2)简述算法algo的功能。voidalgo(Queue*Q){StackS;InitStack(&S);while(!QueueEmpty(Q))Push(&S,;DeQueue(Q));while(!StackEmpty(&S))EnQ9、ueue(Q,Pop(&S));}6.阅读下列函数F,并回答问题:(1)已知如图所示的二叉树以二叉链表作存储结构,rt为指向根结点的指针。写出执行函数调用F(rt)的输出结果。(2)说明函数F的功能。voidF(BinTreeT){StackS;if(T){InitStack(&S);Push(&S,NULL);while(T){printf("%c",T->data);if(T->rchild)Push(&S,T->rchild);if(T->lchild)T=T->lchild;elseT=Po10、p(&S);}}}7.以下函数中h是带头结点的双向循环链表的头指针(1)说明程序的功能;(2)当链表中结点数分另为1和6(不包括头结点时),请写出程序中while循环体的次数。intf(DlistNode*h){DlistNode*p,*q;intj=1;p=h->next;q=h->piror;while(p!=q&&p->piror!=q)if(p->data==q->data){p=p->next;q=q->prior;}elsej=0;returnj;}8.(
7、f(p→adjvex==j){G→adjlist[i].firstedge=p→next;free(p);}else{while(p→next→adjvex!=j&&p→next)____(1);if(p→next!=NULL){q=p→next;___(2)___;free(q);}}p=G→adjlist[j].firstedge;if(p→adjvex==i){G→adlist[j].firstedge=p→next;free(q);}else{while(p→next→adjvex!=i&&
8、p→next)__(3);if(p→next!=NULL){q=p→next;(4);free(q);}}}5.阅读下列函数algo,并回答问题:(1)假设队列q中的元素为(2,4,5,7,8),其中“2”为队头元素。写出执行函数调用algo(&q)后的队列q;(2)简述算法algo的功能。voidalgo(Queue*Q){StackS;InitStack(&S);while(!QueueEmpty(Q))Push(&S,;DeQueue(Q));while(!StackEmpty(&S))EnQ
9、ueue(Q,Pop(&S));}6.阅读下列函数F,并回答问题:(1)已知如图所示的二叉树以二叉链表作存储结构,rt为指向根结点的指针。写出执行函数调用F(rt)的输出结果。(2)说明函数F的功能。voidF(BinTreeT){StackS;if(T){InitStack(&S);Push(&S,NULL);while(T){printf("%c",T->data);if(T->rchild)Push(&S,T->rchild);if(T->lchild)T=T->lchild;elseT=Po
10、p(&S);}}}7.以下函数中h是带头结点的双向循环链表的头指针(1)说明程序的功能;(2)当链表中结点数分另为1和6(不包括头结点时),请写出程序中while循环体的次数。intf(DlistNode*h){DlistNode*p,*q;intj=1;p=h->next;q=h->piror;while(p!=q&&p->piror!=q)if(p->data==q->data){p=p->next;q=q->prior;}elsej=0;returnj;}8.(
此文档下载收益归作者所有