1 / 51 第 一章概论练习答案上一章下一章本章练习题答案分页:[1] [2] 1、解答:【题意解析】本题指定了字符的顺序,所以不能按照ASCII 字符顺序来排序。【典型错误】 1.不按照题目给出的字符顺序进行排序,而按照ASCII 字符顺序。 2.没有给出排序结果 3.认为顺序存储法比较节约空间,事实上由于字符空隙,顺序法并不节约空间; 4. 没有比较各种方法的优劣。【数据结构】本题可以采用的存储结构有顺序(数组)和链表。 1. 用二维数组 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 优点 : 为紧凑存储结构,没有用于存储其他附加的信息,表示方法比较直观简单,代码实现十分容易。缺点: 为每个但此都开辟了同样长度的空间, 造成空间的浪费。 2. 用链表的结构存储,结点为结构 struct strings{ char string[MAX_LENGTH]; strings *pNext; } 2 / 51 优点: 如果有后续工作如反复增删结点, 效率很高 . 并且可以使用不连续的空间。缺点: 操作过程相对复杂 , 容易出错 . 而且排序过程需要从表头开始沿链索一个结点一个结点的比较搜索, 相当费时。3. 索引存储是顺序存储的一种推广 . 使用一个字符串char data[500],其中将大小长度不等的数据结点 ( 单词 ) 顺序存储其中 . 令使用一个字符指针数组 char* index[n],存储一系列指针 , 每个指针指向存储区域的一个数据结点. 排序时 , 直接对 index 中的地址值进行调换修改即可, 而不用修改 data 中的任何内容。索引存储的优点是: 由于单词长度不同 , 在存储时充分考虑了这个因素, 可以节省空间 , 此外由于交换的不是单词本身而是单词的地址, 可以节省时间 , 从时空两方面得到了优化。【排序结果】B899,B9,CRSI,CXY,PAB,PABC,5C,7 2、解答:【题意解析】本题没有指明这100 个实数是否存在相等的情况,在这里,我们考虑存在多个最大值的情形(即100 个实数可能有相等的),为了保存其位置,利用int pos[100] (因为有可能这100 个实数都是相同的)来保存最大值的所有位置。【典型错误】 1. 用 int 类型的数组来保存这100 个元素,没有注意题目中说的是“每个元素的值都是实数”。2. 求最大值的时候代码如下:temp=0; for(int i=0;i<100;i++) if(Num[i]>tem...