数据结构作业C语言版习题.docx
《数据结构作业C语言版习题.docx》由会员分享,可在线阅读,更多相关《数据结构作业C语言版习题.docx(7页珍藏版)》请在冰豆网上搜索。
数据结构作业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的结点
2.2填空题
(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
(2)顺序表中逻辑上相邻的元素的物理位置必定相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
(3)在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的性指示。
(40在单链表中设置头结点的作用是插入或删除首元素不必进行特殊处理。
2.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;
2.7
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)
2.8
a.(7)(12)(6)(3)
b.(8)(13)(5)(4)
c.(15)
(1)(11)(18)
d.(16)
(2)(10)(18)
e.(9)(14)(17)
2.10
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解:
队列逆置
THANKS!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考