数据结构本科期末综合练习算法设计题.doc

数据结构本科期末综合练习算法设计题.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构本科期末综合练习算法设计题

PAGE  PAGE 18 数据结构(本科)期末综合练习(算法设计题) 1. 设有一个线性表 (e0, e1, …, en-2, en-1) 存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个元素内容置换为 (en-1, en-2, …, e1, e0)。 函数的原型为: templateclass Type void inverse ( Type A[ ], int n ); 2. 试编写一个函数,在一个顺序表A中找出具有最大值和最小值的整数。 函数的原型如下所示,原型的参数表中给出顺序表对象为A,通过算法执行,从参数表中的引用参数Max中得到表中的最大整数,Min中得到表中的最小整数。 注意,函数中可使用顺序表的两个公有函数: Length( ) 求表的长度; getData(int k) 提取第k个元素的值。 #include “SeqList.h” template class T void FindMaxMin ( SeqListint A, int Max, int Min ); 3. 设有两个??数类型的顺序表A(有 m个元素)和B(有n个元素),其元素均以升序排列。试编写一个函数,将这两个顺序表合并成一个顺序表C,要求C的元素也以升序排列(表中允许元素重复)。 函数的原型如下所示。原型中的参数表给出参加运算的三个顺序表A、B与C。从C中得到执行结果。函数中用到顺序表的4个公有函数: Length( ) 求表的当前长度; maxLength( ) 求表的最大允许长度; getData(int k) 提取第k个元素的值; setData(int k, int val) 修改第k个元素的值为val。 templateclass T void merge(SeqListint A, SeqListint B, SeqListint C); 4. 编写一个函数frequency,统计在一个输入字符串中各个不同字符出现的频度。函数返回两个数组:A[ ]记录字符串中有多少种不同的字符,C[ ]记录每一种字符的出现次数。此外,还要通过整数k返回不同字符数。 函数的原型如下所示: #include iostream.h #include string.h void frequency( char* s, char A[ ], int C[ ], int k ); 5. 根据两个有序单链表生成一个新的有序单链表,原有单链表保持不变。要求新生成的链表中不允许有重复元素,并要求返回新表的表头指针。填写程序中缺少的部分。 ListNode * Merge ( ListNode *L1, ListNode *L2 ) { //根据两个有序单链表L1和L2, 生成一个新的有序单链表 ListNode *p1 = L1-link, *p2 = L2-link; ListNode *first=new ListNode; ListNode *p=first; while ( p1 != NULL p2 != NULL ) { //当两个链表都未检测完时 } while ( p1 != NULL ) { //继续处理p1链表中剩余的结点。 p=p-link = new ListNode; p-data = p1-data; p1 = p1-link; } while ( p2 != NULL ) { //继续处理p2链表中剩余的结点。 p=p-link = new ListNode; p-data = p2-data; p2 = p2-link; } p-link = NULL; return first-link; } 6. 假定在一个带表头结点的单链表L中所有结点的值按递增顺序排列,试补充下面函数,功能是删除表L中所有其值大于等于min,同时小于等于max的结点。 void rangeDelete ( ListNode * L, ElemType min, ElemType max ) { ListNode *q = L, *p = L-link; } 7. 已知一个带表头附加结点的单链表LA中包含有三类字符:数字字符;字母字符;其他字符。试编写一个while循环补充下面Separate函数,其功能是构造三个新的单链表,使LA,LB,LC单链表各自指向同一类字符。要求使用原表的结点空间。Separate函数将调用如下两个函数: bool

文档评论(0)

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

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

1亿VIP精品文档

相关文档