数据结构(c语言版)课后习题答案完整版.pdfVIP

  • 185
  • 0
  • 约2.59万字
  • 约 15页
  • 2024-07-18 发布于上海
  • 举报

数据结构(c语言版)课后习题答案完整版.pdf

第章绪论

1

5.选择题:CCBDCA

6.试分析下面各程序段的时间复杂度。

()()

1O1

()()

2Om*n

2

()()

3On

()(n)

4Olog3

2

()因为共执行了……+,所以执行时间为()

5x++n-1+n-2+1=n(n-1)/2On

()n

6O()

第章线性表

2

1.选择题

babadbcabdcddac

2.算法设计题

()设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

6

ElemTypeMax(LinkListL){

if(L-next==NULL)retrnNULL;

pmax=L-next;//假定第一个结点中数据具有最大值

p=L-next-next;

while(p!=NULL){//如果下一个结点存在

if(p-datapmax-data)pmax=p;

p=p-next;

}

retrnpmax-data;

()设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表

7

的存储空间。

voidinverse(LinkListL){

//逆置带头结点的单链表L

p=L-next;L-next=NULL;

while(p){

q=p-next;//q指向*p的后继

p-next=L-next;

L-next=p;//*p插入在头结点之后

p=q;

}

}

()已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为(n)、空间

10O

复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

[题目分析]在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第

i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据

元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两

端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素

位置。

voidDelete(ElemTypeA[],intn)

∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。

{i=1;j=n;∥设置数组低、高端指针(下标)。

while(ij)

{while(ijA[i]!=item)i++;∥若值不为item,左移指针。

if(ij)while(ijA[j]==item)j--;∥若右端元素值为item,指针左移

if(ij)A[i++]=A[j--];

}

算法讨论因元素只扫描一趟,算法时间复杂度为()。删除元素未使用其它辅助

文档评论(0)

1亿VIP精品文档

相关文档