1 / 51 第 一章概论练习答案上一章下一章本章练习题答案分页:[1] [2] 1、解答:【题意解析】本题指定了字符的顺序,所以不能按照ASCII 字符顺序来排序
【典型错误】 1
不按照题目给出的字符顺序进行排序,而按照ASCII 字符顺序
没有给出排序结果 3
认为顺序存储法比较节约空间,事实上由于字符空隙,顺序法并不节约空间; 4
没有比较各种方法的优劣
【数据结构】本题可以采用的存储结构有顺序(数组)和链表
用二维数组 array[NUMOFSTRING][MAX_LENGTH],此题可定义 const int NUMOFSTRING=8, MAX_LENGTH=5; B 8 9 9 \0 B 9 \0 C R S I \0 C X Y \0 P A B \0 P A B C \0 5 C \0 7 \0 优点 : 为紧凑存储结构,没有用于存储其他附加的信息,表示方法比较直观简单,代码实现十分容易
缺点: 为每个但此都开辟了同样长度的空间, 造成空间的浪费
用链表的结构存储,结点为结构 struct strings{ char string[MAX_LENGTH]; strings *pNext; } 2 / 51 优点: 如果有后续工作如反复增删结点, 效率很高
并且可以使用不连续的空间
缺点: 操作过程相对复杂 , 容易出错
而且排序过程需要从表头开始沿链索一个结点一个结点的比较搜索, 相当费时
索引存储是顺序存储的一种推广
使用一个字符串char data[500],其中将大小长度不等的数据结点 ( 单词 ) 顺序存储其中
令使用一个字符指针数组 char* index[n],存储一系列指针 , 每个指针指向存储区域的一个数据结点
排序时 , 直接对 index 中的地址值进行调换修改即可, 而不用修改 dat