数据结构基础与算法应用题.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、应用题

1、列出常见的时间效率的数量级表示,并按照时间效率由

高到低的顺序进行排序。

2、说明顺序表和链表的优缺点和适用场合。

顺序表的缺点:

必须确定表的最大长度

可能溢出

删除带来元素的移动

顺序表的优点:

程序设计简单;

随机存取,读写效率为O(1)

适用场合:

元素较小

表长能事先确定

很少在非尾部位置和删除

经常需要根据位序进行读写

链表的优点:

动态的结构,不需事先申请空间

不需要担心溢出

删除只引起指针的变化,效率更高

链表的缺点:

不能做到随机存取,读写效率为O(n)

程序设计复杂性大

链域也占空间,使密度降低

适用场合:

元素较大

不能事先确定表长

经常需要做、删除和元素的重排

。。。。。

3、为了求两个集合A,B的交集C,甲同学用无序表来表示

集合,乙同学用有序表来表示集合。请分别为甲乙两位同学

设计求交集的算法(只需文字描述),并比较不同方案下的

算法的时间效率,你会选择哪种方案?

4、顺序表类,单链表类的定义及其中各方法的实现

(清除不结点的单链表的所有结点,,删除,扩充

算法…..)

5、说明线性表、栈与队的异同点。

相同点:

都是线性结构,都是逻辑结构的概念。

都可以用顺序或链表;

栈和队列是两种特殊的线性表,即受限的线性表,只是对插

入、删除运算加以限制。

不同点:

①基本操作不同

线性表可以在任何合法位置进行和删除;

栈是只允许在一端进行、删除运算,因而是后进先出表

LIFO;

队列是只允许在一端进行、另一端进行删除运算,因而

是先进先出表FIFO。

②用途不同

线性表用于处理更一般的数据处理场合;

栈用于函数之间的相用、递归、表达式的求值等;

队列用于多道作业处理、资源分配等。

6、顺序栈类,链栈类,循环队列类,链式队列类的定义及

其中各方法的实现,其他算法

7、中缀形式转换为前缀和后缀表达式(计算)

8、顺序表、链表,顺序栈,链栈,循环队列,链队列的示

意图,循环队列长度的计算方法?什么是顺序队列的假溢出

现象?如何解决?循环队列如何区分队空和队满?

9、队列和双端队列有何异同?

二、算法设计题

1.假设用不结点的的单链表作为线性表List的结

构,为List类添加一个成员函数定位中间位置的结点。

如果表为(1,2,3,4,5),则中间位置元素为3,如果表为

(1,2,3,4),则中间位置元素为2;

temteclassT

LinkNode*ListT::middle_point(){

LinkNodeT*p=first;

LinkNodeT*q=first;

while(q-next!=NULL){

q=q-next;

if

(q-next!=NULL){q

=q-next;

p=p-next;

}

}

returnp;

}

2、假设用不结点的的单链表作为线性表List的结构,

为List类添加一个递归成员函数,统计表中值为item的结点

..

的个数。

例如:线性表为:(7,2,1,7,2,3,6,5)

统计链表中值为7的结点数,返回结果应为2。

temteclassT

intListT::count_item(T

item){returnrec_count(first,item);

}

temteclassT

intListT::rec_count(LinkNode*head,T

item){if(head==NULL)

return0;

if(head-data==item)

return1+rec_count(head-next,item);

else

returnrec_count(head-next,item);

}

temteclassT

intListT::rec_count(LinkNodeT*head,Titem)

{

if(head==NULL)

return0;

else

if(head-d

文档评论(0)

huang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档