实验一 顺序表的基本运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一顺序表的基本运算

1、实验目的

掌握顺序表的基本操作,初始化、插入、删除以及显示等运算在顺序存储结构上的实现。

2、实验内容

(1)顺序表的初始化;

(2)顺序表插入算法的实现;

(3)顺序表删除算法的实现;

(4)显示顺序表中各个元素;

(5)顺序表清空算法的实现;

(6)顺序表判空算法的实现;

(7)求顺序表长度算法的实现;

(8)求顺序表中一个元素前驱算法的实现;

(9)求顺序表中一个元素后继算法的实现;

(10)求顺序表第i个元素算法的实现。

3、实验要求

(1)能够熟练在Visual C++6.0环境中进行程序的编辑、编译和调试;

(2)会书写类C语言的算法,并将算法转变为程序实现。

4、运行程序

#include

#include

#define MaxSize 100

#define LISTINCREMENT 10

typedef char ElemType;

typedef struct{

ElemType *elem;

int length;

int listsize;

}SqList;

int InitList_Sq(SqList &L){

L.elem = (ElemType *)malloc(MaxSize*sizeof(ElemType));

if(!L.elem) return 0;

L.length = 0;

L.listsize=MaxSize;

return 1;}

int ListInsert_Sq(SqList &L,int i,ElemType e){

if(i<1||i>L.length+1) return 0;

ElemType *p;

if(L.length>=L.listsize) {

ElemType *newbase = (ElemType *)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof(ElemType));

if(! newbase) return 0;

L.elem = newbase;

L.listsize += LISTINCREMENT; }

ElemType *q=&L.elem[i-1];

for(p=&L.elem[L.length-1];p>=q;--p)

*(p+1)=*p;

*q=e;

++L.length;

return 1;}

int ListDelete_Sq(SqList &L,int i,ElemType &e){

if(i<1||i>L.length) return 0;

ElemType *p=&(L.elem[i-1]);

e=*p;

ElemType *q=L.elem+L.length-1;

for(++p;p<=q;++p)

*(p-1)=*p;

--L.length;

return 1;}

void Disp_Sq(SqList L){

if(L.length==0) printf("此顺序表为空表!\n");

for(int i=0;i

printf("%c",L.elem[i]);

printf("\n");}

void main(){

ElemType e;

SqList L;

InitList_Sq(L);

Disp_Sq(L);

ListInsert_Sq(L,1,'A');

ListInsert_Sq(L,2,'B');

ListInsert_Sq(L,1,'C');

Disp_Sq(L);

ListDelete_Sq(L,1,e);

Disp_Sq(L);

printf("删除的元素是:%c\n",e);}

5、测试数据:

(1)运行程序并给出运行结果。

(2)改变主函数,使插入的元素序列为CBA,并删除第2个位置的元素。

void main( ){

}

(3)执行下列函数

#include

#include

void main(){

char a[3]={'C','A','B'}; int i;

for(i=0;i<3;i++) printf("%c",a[i]);

printf("\n");

char e=a[0];

for(i=0;i<2;i++) a[i]=a[i+1];

a[2]=' ';

for(i=0;i<3;i++) printf("%c",a[i]);

printf("\n");

printf("删除的元素是:%c\n",e); }

观察运行结果,分析在数组中直接插入和删除元素与在顺序表中插入删除元素的区别。

(4)将实验内容中(5)-(10)的算法写成函数,使得主程序可以调用它们。

相关文档
最新文档