28-编程练习
17.12 编程练习
1.修改程序清单17.2,让该程序既能正序也能逆序显示电影列表。一种方法是修改链表的定义,可以双向遍历链表。另一种方法是用递归。
2.假设 list.h (程序清单17.3)使用下面的 list 定义:
typedef struct list
{
Node * head; /* 指向list的开头 */
Node * end; /* 指向list的末尾 */
} List;
重写 list.c (程序清单17.5)中的函数以适应新的定义,并通过 films.c (程序清单17.4)测试最终的代码。
3.假设 list.h (程序清单17.3)使用下面的 list 定义:
#define MAXSIZE 100
typedef struct list
{
Item entries[MAXSIZE]; /* 内含项的数组 */
int items; /* list中的项数 */
} List;
重写 list.c (程序清单17.5)中的函数以适应新的定义,并通过 films.c (程序清单17.4)测试最终的代码。
4.重写 mall.c (程序清单17.9),用两个队列模拟两个摊位。
5.编写一个程序,提示用户输入一个字符串。然后该程序把该字符串的字符逐个压入一个栈(参见复习题5),然后从栈中弹出这些字符,并显示它们。结果显示为该字符串的逆序。
6.编写一个函数接受3个参数:一个数组名(内含已排序的整数)、该数组的元素个数和待查找的整数。如果待查找的整数在数组中,那么该函数返回1;如果该数不在数组中,该函数则返回0。用二分查找法实现。
7.编写一个程序,打开和读取一个文本文件,并统计文件中每个单词出现的次数。用改进的二叉查找树存储单词及其出现的次数。程序在读入文件后,会提供一个有3个选项的菜单。第1个选项是列出所有的单词和出现的次数。第2个选项是让用户输入一个单词,程序报告该单词在文件中出现的次数。第3个选项是退出。
8.修改宠物俱乐部程序,把所有同名的宠物都存储在同一个节点中。当用户选择查找宠物时,程序应询问用户该宠物的名字,然后列出该名字的所有宠物(及其种类)。
