c语言数据结构顺序表 下载本文

内容发布更新时间 : 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 #include #include #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 ;

for(i=0;i