内容发布更新时间 : 2024/11/19 15:33:33星期一 下面是文章的全部内容请认真阅读。
数据结构上机实验课
姓名:冯天明学号:班级:通信
后练习报告
141
2015年9月28日星期一
1、
实验一:编写一个程序,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成以下功能。 1.初始化顺序表L
2.依次采用尾插法或者头插法插入元素a,b,c,d,e 3.输出顺序表L
4.输出顺序表的长度 5.判断顺序表是否为空 6.输出顺序表的第四个元素 7.输出元素a的位置
8.在第三个元素位置插入元素f 9.输出顺序表L
10.删除顺序表L的第四个元素 11.输出顺序表L 12.释放顺序表
实验代码:
#include
#define MaxSize 20 //设置顺序表的初始长度 #define ListAdd 5 //每次申请增加的内存大小 #define OVERFLOW -1 #define OK 0 #define ERROR -2 typedef char ElemType; typedefstruct //顺序表定义 {
ElemType *elem;
int length; //顺序表长度
intlistsize; //顺序表占用的内存空间
}SqList;
/**************初始化顺序表函数****************/ voidInitSq_List(SqList&L) {
L.elem = new ElemType[MaxSize]; //在堆上申请内存
if(!L.elem)exit(OVERFLOW); //内存申请失败 L.length = 0;
L.listsize = L.length; }
/***********创建一个顺序表*************/ voidGreatSqList(SqList&L,int n) {
inti;
for(i = 0;i scanf(\ fflush(stdin); ++L.length; } } /***********************销毁顺序表**************/ voidDeatrotSqList(SqList&L) { delete L.elem; //释放指针指向的内存 L.length = 0; L.listsize = 0; } //尾插法插入元素 intSqList_Inser(SqList&L,inti,ElemType e) { int j; ElemType *p; if(i<1 || i>L.length + 1) //插入位置非法则退出 return ERROR; if(L.length>= L.listsize) //如果初始化申请的空间已满,则重新申请 { p = (ElemType *)realloc(L.elem,(L.listsize+ListAdd) * sizeof( ElemType )); if(!p) return OVERFLOW; L.elem = p; L.listsize += ListAdd; } for(j=L.length - 1;j>=i-1;j--) { L.elem[j+1] = L.elem[j]; //元素依次往后移覆盖,实现删除 } L.elem[i-1] = e; ++L.length; return OK; } /**********判断顺序表是否为空***********/ intListEmpty(SqList&L) { return (L.length == 0); } /*********获取顺序表长度************/ intgetList_Len(SqList&L) { returnL.length; } /************取出对应下标元素*****************/ intgetIndex(SqListL,charelem) { int index = 0; while(index if( L.elem[index] == elem) //判断元素是否相当 return index+1; //找到元素并返回下标 index++; } return ERROR; //否则返回错误 } /**************根据下标取出对应的元素*************/ intLocateElem(SqListL,int index) { inti = 0; if(index >=L.length || index<1) { printf(\下标越界,无法查询!\ return ERROR; } returnL.elem[index-1]; } /************删除指定位置的元素值************/ intDleteElem(SqList&L,int n) { int j; if(n>L.length || n<1) return ERROR; for(j = n-1;j L.elem[j] = L.elem[j+1]; } return OK; } /*************输出顺序表的内容***************/ voidDisPlay_SqList(SqList L) { inti; if(ListEmpty(L)) return ;