数据结构作业C语言版习题.docx

上传人:b****8 文档编号:10922144 上传时间:2023-02-23 格式:DOCX 页数:8 大小:29.02KB
下载 相关 举报
数据结构作业C语言版习题.docx_第1页
第1页 / 共8页
数据结构作业C语言版习题.docx_第2页
第2页 / 共8页
数据结构作业C语言版习题.docx_第3页
第3页 / 共8页
数据结构作业C语言版习题.docx_第4页
第4页 / 共8页
数据结构作业C语言版习题.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数据结构作业C语言版习题.docx

《数据结构作业C语言版习题.docx》由会员分享,可在线阅读,更多相关《数据结构作业C语言版习题.docx(8页珍藏版)》请在冰豆网上搜索。

数据结构作业C语言版习题.docx

数据结构作业C语言版习题

数据结构作业(C语言版)习题

 

数据结构作业(C语言版)习题

1.4,试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

 

复数:

ADTTriplet

{

D={r,i|r,i为实数}

R={}

InitComplex(&C,re,im)

}ADTComplex

有理数:

ADTTriplet

{

D={c1,c2,c3|c1,c2,c3∈Z,c3≠0};

R={};

C3=c1/c2;

}ADTTriplet

 

1.9假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)。

intTime(intn){

count=0;x=2;

while(x<n/2){

x*=2;count++;

}

return(count)

}//Time

解:

count=

1.16试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。

Voidbubble-sort(inta[X,Y,Z],inti){

for(i=n-1,change=TRUE;i≥&&change;--i){

change=FALSE;

for(j=0;j

if(a[j]>a[j+1]){a[j+1]←→a[j]change=TRUE;}

}

}//bubble-sort

解:

intmax3(intx,inty,intz)

{

if(x>y)

if(x>z)returnx;

elsereturnz;

else

if(y>z)returny;

elsereturnz;

}

2.1描述以下三个概念的区别:

头指针,头结点,首元结点(第一个元素结点)。

头结点:

在单链表的第一个结点之前附设一个结点,即称之为头结点

头指针:

链表中第一个结点的存储位置即称之为头指针

首元结点:

首元结点是指链表中存储线性表中第一个数据元素a1的结点

(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。

(2)顺序表中逻辑上相邻的元素的物理位置必定相邻。

单链表中逻辑上相邻的元素的物理位置不一定相邻。

(3)在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的性指示。

(40在单链表中设置头结点的作用是插入或删除首元素不必进行特殊处理。

2.4对以下单链表分别执行下列各程序段,并画出结果示意图。

2

5

7

3

8

6

4

(1)Q=P->next;

(2)L=P->next;

(3)R->data=P->data;

(4)R->data=P->next->data;

(5)P->next->next->next->data=P->data;

(6)T=P;

While(T!

=NULL){T->data=T->data*2;T=t->next;}

(7)T=P

While(T->next!

=NULL){T->data=T->data*2;T=T->next;}

2.5画出执行下列各行语句后各指针及链表的示意图。

L=(LinkList)malloc(sizeof(LNode));P=L

For(i=1;i<=4;i++){

p->next=(LinkList)malloc(sizeof(LNode));

P=P->next;p->data=i*2-1;

}

P->next=NULL;

for(i=4;i>=1;i--;)Ins-LinkList(L,i+1,i*2);

for(i=1;i<=3;i++)Del-LinkList(L,i);

解:

2.6已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

A.在P结点后S结点的语句序列是:

(4)

(1)

B.在P结点前S结点的语句序列是:

(7)(11)(8)(4)

(1)

C.在表首S结点的语句序列是:

(5)(12)

D.在表尾S结点的语句序列是:

(9)

(1)(6)

(1)P->next=S;

(2)P->next=P->next->next;

(3)P->next=S->next;

(4)S->next=P->next;

(5)S->next==L;

(6)S->next=NULL;

(7)Q=P

(8)while(P->next!

=Q)P=P->next;

(9)while(P->next!

=NULL)P=P->next;

(10)P=Q

(11)P=L;

(12)L=S;

(13)L=P;

a.(11)(3)(14)

b.(10)(12)(8)(11)(3)(14)

c.(10)(12)(7)(3)(14)

d.(12)(11)(3)(14)

e(9)(11)(3)(14)

a.(7)(12)(6)(3)

b.(8)(13)(5)(4)

c.(15)

(1)(11)(18)

d.(16)

(2)(10)(18)

e.(9)(14)(17)

StatusDeleteK(SqList&a,inti,intk)

{

intj;

if(i<0||i>a.length-1||k<0||k>a.length-i)returnINFEASIBLE;

for(j=0;j<=k;j++)

a.elem[j+i]=a.elem[j+i+k];

a.length=a.length-k;

returnOK;

}

2.13.解:

intLocateElem_L(LinkList&L,ElemTypex)

{

inti=0;

LinkListp=L;

while(p&&p->data!

=x)

{

p=p->next;

i++;

}

if(!

p)return0;

elsereturni;

}

2.14.解:

intListLength_L(LinkList&L)

{

inti=0;

LinkListp=L;

if(p)p=p-next;

while(p){

p=p->next;

i++;

}

returni;

}

3.1.解:

(1)123231321213132

(2)可以得到135426的出站序列,但不能得到435612的出站序列。

因为4356出站说明12已经在栈中,1不可能先于2出栈。

3.3.解:

stack

3.4.解:

(1)栈中的数据元素逆置

(2)如果栈中存在元素e,将其从栈中清除

3.12.解:

char

3.13解:

队列逆置

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1