安徽大学《数据结构》2021-2022学年期末试卷.docxVIP

  • 0
  • 0
  • 约3.54千字
  • 约 7页
  • 2026-01-21 发布于江西
  • 举报

安徽大学《数据结构》2021-2022学年期末试卷.docx

安徽大学2021—2022学年第2学期

院/系年级专业姓名学号

答题勿超装订线

------------------------------装---------------------------------------------订----------------------------------------线

《数据结构》考试试卷(A卷)

(闭卷时间120分钟)

考场登记表序号

一、算法分析题(每小题5分,共20分)

1.分析下面算法的时间复杂度。

voidFunction(intn)

{inti=1,j;

if(n==1)return;

for(i=1;i=n;i++){

for(j=1;j=n;j++){

printf(“*”);

break;

}

}

}

2.分析下面算法,回答问题。

LNode*Function(LinkListL)//L为带头结点的单链表

{LNode*ptr1,*ptr2;

inti=0;

ptr1=ptr2=L-next;

while(ptr1-next!=NULL){

if(i==0){

ptr1=ptr1-next;i=1;

}

elseif(i==1){

ptr1=ptr1-next;ptr2=ptr2-next;i=0;

}

}

returnptr2;

}

(1)请指出Function(L)算法的功能。

题号

总分

得分

阅卷人

得分

(2)当L={1,3,5,7,9,11,13}时,执行Function(L)后,ptr2-data的值是多少?

第1页共6页

3.分析下面算法,回答问题。

intFunction(BiTree*root)//root为二叉链表存储的二叉树

{BiTNode*temp;intn=0;QueueQ;//队列Q if(!root)return0;

InitQueue(Q);//InitQueue(Q)为队列的初始化操作

EnQueue(Q,root);//EnQueue(Q,e)为队列的入队操作

while(!IsEmptyQueue(Q)){

//IsEmptyQueue(Q)为队列的判空操作,若Q空则返回真,否则返回假DeQueue(Q,temp);

if(!temp-lchildtemp-rchild||temp-lchild!temp-rchild)n++;if(temp-lchild)EnQueue(Q,temp-lchild);

if(temp-rchild)EnQueue(Q,temp-rchild);

}

DestroyQueue(Q);//DestroyQueue(Q)为队列的销毁操作returnn;

}

(1)请分析上述Function(root)算法的功能。

(2)若root=(A(B(D,E),C(F,G))),则执行Function(root)后,n等于多少?

4.阅读并分析下面算法,回答问题。

KeyTypeFunction(RecTypeR[],ints,intt,intk)

{inti=s,j=t;RecTypetmp;

if(st){

tmp=R[s];

while(ij){

while(jiR[j].key=tmp.key)j--;

if(ij){R[i]=R[j];i++;}

while(ijR[i].keytmp.key)i++;

if(ij){R[j]=R[i];j--}

}

R[i]=tmp;

if(k-1==i)returnR[i].key;

elseif(k-1i)returnFunction(R,s,i-1,k);

elsereturnFunction(R,i+1,t,k);

}

elseif(s==ts==k-1)returnR[k-1].key;

elsereturn-1;

}

(1)请分析上述Function(RecTypeR[],ints,intt,intk)算法的功能。

(2)若R[

文档评论(0)

1亿VIP精品文档

相关文档