顺序表定义和使用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); } 五.解题思路 六.应用代码