(2)改变记录的位置。具体处理方式依赖于记录的存储形式,对于顺序型记录,一般移动记录本身,而链式存储的记录则通过改变指向记录的指针实现重定位。
由本次课程设计的课题内容分析可得,解决问题的实际就是要建立一个单链表,将待排序的整型数据以结点的形式存储在建立的单链表中。然后,依次对单链表中的结点数据进行简单选择排序,其中排序为从大到小排序用这种方法实现所要求的排序方式得到结果。
3
2. 总体设计
2.1 总体思路
程序中要求利用人机对话实现选择程序是按数值进行排序还是按字符顺序进行排序,在这,可以利用if-else选择语句对程序进行编写,从而达到人机对话实现选择程序是按数值进行排序还是按字符顺序进行排序。
本程序设计关于排序的基本思想是:链式简单选择排序的是每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最大或最小的记录作为有序序列中第i个记录。本课程设计中以单链表为存储结构,待排序的数据由伪随机函数产生。因此,首先需要创建一个单链表,将待排序数据存储在单链表中,然后用指针实现关键字的从大到小的排序。
2.2 相关技术
流程控制语句:for语句,switch,while语句等。这里用到了while语句和for语句。For语句的形式如下:
for语句形式:
for (表达式1; 表达式2; 表达式3)
语句;
执行过程:
首先计算“表达式1”(循环初值),且仅计算一次。每一次循环之前计算“表达 式2”(循环条件),如果其结果为真,则执行“语句”(循环体),并计算“表达式3”(循环增量)。否则,循环终止。
While语句形式:
while (表达式)
语句;
它的执行过程:首先计算“表达式” 的值,如果为真,则执行“语句” 。再次判断,直至“表达式”的值为假结束循环。
本程序的主函数通过定义一个链表结构体指针head,用以指向链表头结点;设计一个循环输入变量,控制相关方法的调用来实现链表的建立及对数据的排序。
4
3. 详细设计
3.1 设计原则
本程序的主函数通过定义一个链表结构体指针head,用以指向链表头结点;设计一个循环输入变量,控制相关方法的调用来实现链表的建立及对数据的排序。
本程序通过if-else.选择语句对程序进行编写,从而达到人机对话实现选择程序是按数值进行排序还是按字符顺序进行排序。
在控制流程过程中,选择for语句和while语句达到对程序流程的循环控制。
3.2 模块设计
可以用流程图来展示
函数流程图 输入数字1,2 选择排序方式 若是1 若是2 选择数值排序方式 选择字符排序方式 输出排序结果 选择退出继续 若选择0 若选择1 结束
5
4. 实现与测试
4.1 实现环境
本课程设计需要采用支持标准C/C++的Visual C++编译器(6.0或更高版本),并采用最基础的Windows xp控制台程序。
4.2 模块实现
1. 用户可根据系统提示和用户需要输入1—2的操作数字。
图4.1 程序主界面
2. 当用户输入1时,系统执行数值排序方式。
图4.2 输出数值排序方式界面
3. 当用户输入2时,系统执行字符顺序排序。
图4.3 输出字符排序方式界面
6
4.3测试
程序最后的测试结果输出为:
图4.4
由上图可得,当输入的数据为12,24,9,128,3,76,345,选择按数值大小排序是,输出的排序结果为:3,9,12,24,76,128,345,与题目中所要求得到的结果一致,当输入数据后选择按字符大小排序得到的结果为:12,128,24,3,345,76,9,也题目所要求所得到的数据一致。说明程序编写是正确的。
7