实验一-线性表及其应用(I)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名学号
scanf_s("%d", &LIST_MAX);
printf("※2. 请录入数据:");
for (i = 0; i { scanf_s("%d", &(L.elem[i])); //向顺序表中输入数据 ++L.length; //表长自增1 } printf("※3. 请选择数据的排序方式(0:递减,1:递增):"); scanf_s("%d", &DIR); if (DIR) { BubbleSortList_Sq(L, INCREASE); //将顺序表递增排序 printf("※4. 数据递增排列:"); } else { BubbleSortList_Sq(L, DECREASE); //将顺序表递减排序 printf("※4. 数据递减排列:"); } PrintfList_Sq(L); //打印输出 printf("\n※5. 请输入待插入的元素:"); scanf_s("%d", &data); InsertSequentList_Sq(L, data); //将数据元素插入到顺序表L中printf("※6. 插入元素后的顺序表:"); PrintfList_Sq(L); //打印输出 InverseList_Sq(L); //将顺序表就地逆置 printf("\n※7. 就地逆置后的顺序表:"); PrintfList_Sq(L); //打印输出 printf("\n\n"); return 0; } 2.头文件”ADT.h”的部分程序如下: #ifndef ADT_H_ #define ADT_H_ /************************************************************ * 常量和数据类型预定义 ************************************************************/ /* ------函数结果状态代码------ */ #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 /* ------排序方式状态------ */ #define INCREASE 1 //递增 #define DECREASE 0 //递减 /* ------数据类型预定义------ */ typedef int Status; //函数结果状态类型 typedef int_bool; //bool状态类型 /************************************************************ * 数据结构类型定义 ************************************************************/ /************************线性表*************************/ /* ------顺序表数据类型定义------ */ typedef int ElemType; //顺序表中元素的数据类型 /* ------线性表的动态存储分配初始常量预定义------ */ #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 /* ------顺序存储结构类型定义------ */ typedef struct { ElemType * elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 }SqList; //顺序表类型 3.头文件”DataStructure_LinearList.h”中部分函数定义如下: #include #include #include"ADT.h" /* * 函数原型:Status InverseList_Sq(SqList &L) * 函数功能:将线性表L就地逆置 * 入口参数:结构体类型SqList的引用 * 出口参数:返回函数结果状态 */ Status InverseList_Sq(SqList &L) { int i; //循环变量 ElemType temp; //临时变量 for (i = 0; i <= (L.length + 1) / 2; i++) //根据对称中心进行数据交换{ temp = L.elem[i]; //缓存需要交换的数据 L.elem[i] = L.elem[L.length - 1 - i]; //对称位置数据交换 L.elem[L.length - 1 - i] = temp; } return OK; } //InverseList_Sq