《数据结构》程序设计实习题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》程序设计实习题目
1. 分别以顺序表和单链表作为存储结构,实现将线性表就地逆置的操作。(所谓“就地逆置”是指辅
助空间为0(1),即利用原表中的结点空间)。
2. 写一程序将单链表中值重复的结点删除,使得表中各结点值均不相同。
3. 已知一单链表中含有两类字符的数据元素(如:字母、数字),试编写程序将该单链表分成两个单链
表,使得每个链表中只含有同一类的字符。
4. 假设有两个按元素值递增有序的单链表A和B,试编写程序将A和B归并成一个按元素值递减有序的
单链表。
5. 利用线性结构(顺序表或链表)实现两个20位大整数的加法运算。
6. 已知两个以顺序结构存储的线性表A和B,试编写程序实现从A表中删除包含在B表中的元素。
7. 已知两个单链表A和B,试编写程序实现从A表中删除包含在B表中的元素。
8. 已知两个以顺序结构存储的线性表A和B,试编写程序实现:将在B表中但不在A表中的元素插入到
A表。
9. 已知两个单链表A和B,试编写程序实现:将在B表中但不在A表中的元素插入到A表。
10. 试编写程序,对任意输入的一个算术表达式,将式中的数字和运算符分成两类(一类是数字,一类是
运算符),并按逆序输出。(提示:利用栈来实现)
11. 利用栈结构,编写一个程序,对以逆波兰式表示的表达式求值。
12. 编写程序,求得所有包含在串S中而不包含在串T中的字符(S中重复的字符只选一个)构成的新串
R。
13. 编写程序,求任意输入的串S中所含不同字符的总数和每种字符的个数。
14. 一个文本串可用事先给定的字母映射表进行加密。例如:设字母映射表为:
abcdefghijkl mn opqrstuvwxyz
n g z q t c o b m u hel kpdawxfyi v r s j 则字符串“ encrypt ”被加密为“ tkzwsdf ”。试写一程序将输入的文本串进行加密后输出。
15. 假设两个10 X 10的稀疏矩阵A和B以三元组表的方式存储,试编写程序实现矩阵的相加运算,其结
果存放在三元组表C中。
16. 对给定的整数序列,建立一棵二叉排序树,并按中序遍历输出树中结点。
17. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。
18. 编写一算法,计算二叉树中叶子结点的数目。
19. 编写一算法,计算二叉树的深度。
20. 对给定的图的邻接矩阵,试编写程序,建立该图的邻接表。
21. 假设一个有向图以邻接矩阵方式存储,试编写程序,求出图中各结点的出度和入度。
22. 实现克鲁斯卡尔算法,求出给定图的最小生成树。(只需输出各条选中的边)
23. 对一个给定的有向图,编写算法判断它是否是强连通图。
24. 编写算法,实现从二叉排序树中删除一个关键字。
25. 编写程序,实现对索引顺序表的查找。(即分块查找)
26. 编写程序实现:以“除留余数法”为哈希函数,对任意输入的一批100 以内的整数,构造哈希表,
表长为30。(注:解决冲突可以用开放定址法)
27. 以单链表为存储结构,实现直接插入排序。
28. 按折半查找的方法,实现直接插入排序。(即教材中的2-路插入排序)
29. 编写程序,对任意输入的一批数据,建立一个大根堆。
30. 以单链表为存储结构,实现简单选择排序算法。
31. 编写程序,对n 个正、负整数组成的序列进行整理,将所有的负数排到非负数之前。
32. 荷兰国旗问题(三色旗问题):设有一个仅由红、白、蓝三种颜色的条块组成的条块序列(三种色块
的数目可不同,各色块是任意排列的),试编写一个算法,使得这些条块按红、白、蓝的顺序排好(即所有红色的条块集中在序列前部,白色在中部,蓝色在后部)。
33. 以基数排序的方法,实现对任意输入的一组2 位正整数进行排序。