数据结构与算法线性表练习题.doc

数据结构与算法线性表练习题.doc

ID:50543883

大小:62.37 KB

页数:38页

时间:2020-03-10

数据结构与算法线性表练习题.doc_第1页
数据结构与算法线性表练习题.doc_第2页
数据结构与算法线性表练习题.doc_第3页
数据结构与算法线性表练习题.doc_第4页
数据结构与算法线性表练习题.doc_第5页
资源描述:

《数据结构与算法线性表练习题.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、三、写一个算法合并两个已排序的线性表。(用两种方法:数组表示的线性表(顺序表)和指针表示的线性表(链表))要求:1、定义线性表节点的结构,并定义节点的型和位置的型。2、定义线性表的基本操作3、在1,2的基础上,完成本题。4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。四、已知一个单向链表,试给出复制该链表的算法。要求:1、定义线性表的节点的结构以及节点的型和位置的型。2、定义线性表的基本操作3、在1,2的基础上,完成本题。4、在main函数中进行测试:先构建一个线性表,并定义一个空线性表,然后进行复制。五、写出

2、从一个带表头的单链表中删除其值等于给定值x的结点的算法函数:intdelete(LIST&L,intx);如果x在该链表中,则删除对应结点,并返回其在链表中的位置(逻辑位置,第一个结点的逻辑位置为1),否则返回-1。要求:1、定义线性表的节点的结构以及节点的型和位置的型。2、定义线性表的基本操作3、在1,2的基础上,完成本题。4、在main函数中进行测试:先构建一个线性表,然后调用函数删除值等于给定值的节点。六、写出一个将两个静态链表(属于同一个存储池)合并的算法函数:voidMerge(cursorM,cursorN);合并的方法是将N

3、链表中的所有结点添加到M链表的后面,并将N链表的表头结点添加到空闲结点链表中。要求:1、定义静态链表的结点的结构以及结点的型SPACE以及位置(position)和游标(cursor)的型。2、定义静态链表的基本操作:voidInitialize();初始化,将所有存储池中的结点设置为空闲;cursorGetNode();从空闲链中获取一个结点;voidFreeNode(cursorq);将结点q加入到空闲链;voidInsert(elementtypex,positionp,cursorM);在链表M中的位置为p的元素后面添加一个值为x

4、的结点;voidDelete(cursorM,positionp);在链表M中删除位置为p的元素的后一个元素。3、在1、2的基础上完成本题。4、在main函数中进行测试:先构建一个存储池,然后在该存储池中创建两个静态表,最后将这两个静态表合并。七、利用指针表示的线性表(链表)表示一个多项式,并实现两个多项式的相加和相乘运算。假设多项式形式为:其中,系数ai≠0,指数ei满足em>em-1>…>e2>e1>=0。要求:1、定义多项式每一项的结构。2、定义两个多项式的相加和相乘运算函数。3、在main函数中,构建两个多项式,并测试相加和相乘运

5、算。八、试编写一个整数进制转换的通用函数convert(intnum,STACKS,intn),要求将整数m转换为n进制数,n进制数的各位依次存放在栈S中。并在主函数中进行测试。要求:1、定义栈以及栈的型。2、定义栈的各种操作。3、实现函数convert。4、在main函数中,通过调用函数convert将num的n进制数存放到一个栈中,并通过出栈的方法输出该n进制数九、设有一个循环队列Queue,只有头指针front,不设尾指针,另设一个含有元素个数的计数器count,试写出相应的判断队列空、判断队列满、出队算法和入队算法。要求:1、定义

6、相应的循环队列的型(只有头指针,没有尾指针,但有一个元素个数的计数器);2、定义该队列的四个算法:判断队列空、判断队列满、出队算法和入队算法;3、在main函数验证算法的正确性。十、设主串T=“abcaabbabcabaacbacba“,模式为p=“abcabaa”。1、计算模式p的nextval函数值2、不写算法,只画出利用KMP算法进行模式匹配时,每一趟的匹配过程。要求:1、写出模式p的nextval值;2、画出KMP算法的每一趟匹配过程(可参照教材P61从第8行开始的内容);3、不需要编写程序。十一、假设表达式中允许包含三种括号:圆

7、括号、方括号和大括号。设计一个算法采用顺序栈(用数组表示的栈)判断表达式中的括号是否正确配对。要求:1、定义栈以及栈的型,栈中所存放元素的类型为字符型,定义枚举类型Boolean,其中两个元素分别为TRUE和FALSE。2、定义栈的各种操作。3、定义函数Booleancheck(char*s);判断s中的括号是否正确配对,如果正确配对,返回TRUE,否则返回FALSE。4、在主函数中验证所编写函数的正确性。十二、设有一个带头结点的双向链表h,设计一个算法用于查找第一个元素之为x的结点,并将其与其前驱结点进行交换。要求:1、定义带头结点的双

8、向链表的型DLIST。2、定义双向链表DLIST的基本操作。3、定义函数intswap(elementtypex,DLIST&h),查找第一个元素之为x的结点,如果在链表中存在元素值为x的结点

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。