顺序表定义和使用实验报告

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

题目:顺序表的定义与使用

一.实验要求:(1)用C/C++定义顺序表的存储结构(2)至少实现四个基本操作(初始化,创建,插入,删除等)(3)使用定义的顺序表实现表内的顺序逆置

二.抽象数据类型

Status Chushih_L(SeqList &l);

void Create_L(SeqList &l);

Status Insert_L(SeqList &l);

Status Delete_L(SeqList &l);

Status chazhao_L(SeqList &l);

Status nizhi_L(SeqList &l);

void Merge_L(SeqList La,SeqList Lb,SeqList Lc);

void Print_L(SeqList &l);

三.存储结构

typedef int Status;

typedef int ElemType;

typedef struct {

ElemType *elem;

int length;

int size;

}SeqList;

四.基本操作:

Status Chushih_L(SeqList &l){

//l.elem=(ElemType*)malloc(sizeof(ElemType));

l.elem=new ElemType[Size];

if(!l.elem) exit(OVERFLOW);

l.length=0;

return OK;

}

void Create_L(SeqList &l){

int n;

cout<<"输入表的长度:"<

cin>>n;

l.length=n;

cout<<"输入表中的元素:";

for(int i=0;i

{

cin>>l.elem[i];

}

Print_L(l);

}

void Print_L(SeqList &l){

cout<<"表中的元素:"<

for(int j=0;j

cout<

cout<

}

Status Insert_L(SeqList &l){

int i,n;

cout<<"输入元素插入的位置以及插入的数值:"<

cin>>i>>n;

ElemType *p;

ElemType *q=&(l.elem[i-1]);

for(p=&(l.elem[l.length-1]);p<=q;p--)

*(p+1)=*p;

*q=n;

Print_L(l);

return OK;

}

Status Delete_L(SeqList &l){

int n;

cout<<"输入删除表中元素的位置:"<

cin>>n;

if(n<1||n>l.length)

cout<<"删除错误!"<

else

for(int j=n-1;j

l.elem[j]=l.elem[j+1];

l.length--;

Print_L(l);

return OK;

}

Status chazhao_L(SeqList l){

int n,z;

cout<<"请输入查找的元素:"<

cin>>n;

for(int i=0;i

if(n==l.elem[i])

z=i;

else z=0;

}

if(z)

cout<<"该元素位于第"<

else cout<<"不存在该元素!"<

}

Status nizhi_L(SeqList &l){

int i,n,temp;

n=l.length;

for(i=0;i

temp=l.elem[i];

l.elem[i]=l.elem[n-i-1];

l.elem[n-i-1]=temp;

}

Print_L(l);

return OK;

}

void Merge_L(SeqList La,SeqList Lb,SeqList Lc){

ElemType *pa,*pb,*pc,*pa_last,*pb_last;

pa=La.elem;pb=Lb.elem;

Lc.length=Lc.size=La.length+Lb.length;

pc=Lc.elem=(ElemType*)malloc(Lc.size*sizeof(ElemType));

if(!Lc.elem)

exit(OVERFLOW);

pa_last=La.elem+La.length-1;

pb_last=Lb.elem+Lb.length-1;

while(pa<=pa_last&&pb<=pb_last)

{

if(*pa<=*pb)

*pc++=*pa++;

else

*pc++=*pb++;

}

while(pa<=pa_last)

*pc++=*pa++;

while(pb<=pb_last)

*pc++=*pb++;

Print_L(Lc);

}

五.解题思路

六.应用代码

相关文档
最新文档