网站大量收购闲置独家精品文档,联系QQ:2885784924

习 题及答案.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习 题 二 1 简述下列术语:线性表,顺序表,链表。 线性表:最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。 顺序表:是指用一组连续的存储单元一次存储线性表中的数据元素。物理结构和逻辑结构都相邻。 链表:逻辑结构相邻的数据元素物理结构不一定相邻。采用指针的形式连接起来。 2 何时选用顺序表,何时选用链表作为线性表的存储结构合适?各自的主要优缺点是什么? 不需要经常大量的修改表或需要随机存取的情况下可以选用顺序表; 相反需要经常大量的修改表,但不是频繁的随机存取的情况下可选用链式表。 3 在顺序表中插入和删除一个结点平均需要移动多少个结点?具体的移动次数取决于哪两个因素? 答:平均需要移动n/2个结点。表的长度,和要插入的位置。 4 链表所表示的元素是否有序?如有序,则有序性体现于何处?链表所表示的元素是否一定要在物理上是相邻的?有序表的有序性又如何理解? 答:有序。有序性体现在通过指针数据元素有序的相连。物理上不一定要相邻。 5 设顺序表L是递增有序表,试写一算法,将x插入到L中并使L仍是递增有序表。 Status ListInsert(SqList L,int i,ElemType e) { if((iL.length+1)||i1) return ERROR; if(L.length=L.listsize) { newbase=(ElemType *)realloc((L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(-1); L.elem=newbase; L.listsize+=LISTINCREMENT; } ElemType *q,*p; q=L.elem[i-1]; for(p=L.elem[L.length-1];p=q;p--) *(p+1)=*p; *q=e; L.length++; return OK; } 9 设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。 void ListInsert(SqList A,SqList B,SqList C) { ElemType *p,*q,*s; P=A; q=B; s=C; while(p.next!=NULL||q.next!=NULL) { if(p.next.data=q.next.data) { if(s.next!=NULL) p.next=s.next; s.next=p.next; p++; } else { if(s.next!=NULL) q.next=s.next; s.next=q.next; q++; } } while(p.next!=NULL) { p.next=s.next; s.next=p.next; } while(q.next!=NULL) { q.next=s.next; s.next=q.next; } 习 题 三 1 设有一个栈,元素进栈的次序为a, b, c。问经过栈操作后可以得到哪些输出序列? Abc,acb,bac,bca,cba. 2 循环队列的优点是什么?如何判断它的空和满? 优点:可以克服顺序队列的“假上溢”现象,能够使存储队列的向量空间得到充分利用。 判断循环队列的空或满不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满。三是设置一计数器记录队列中元素的总数,不仅可判别空或满,还可以得到队列中元素的个数 。 3 设有一个静态顺序队列,向量大小为MAX,判断队列为空的条件是什么?队列满的条件是什么? 队列为空:front=rear。队满:rear=MAX -1或front=rear (队首指针front ,一个队尾指针rear) 4 设有一个静态循环队列,向量大小为MAX,判断队列为空的条件是什么?队列满的条件是什么? 循环队列为空:front=rear 。 循环队列满:(rear+1)%MAX=front。 (队首指针front ,一个队尾指针rear) 5 利用栈的基本操作,写一个返回栈S中结点个数的算法int StackSize(SeqStack S) ,并说明S为何不作为指针参数的算法? intStackSize (SeqStack S) {//计算栈中结点个数  int n=0;   if(!EmptyStack(S))    

文档评论(0)

82393aa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档