数据结构实验一_顺序表的基本操作实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序表的基本操作
一、实验目的
掌握线性表的顺序表基本操作:建立、插入、删除、查找、合并、打印等运算。
二、实验要求包含有头文件和main函数;
1.格式正确,语句采用缩进格式;
2.设计子函数实现题目要求的功能;
3.编译、连接通过,熟练使用命令键;
4.运行结果正确,输入输出有提示,格式美观。
三、实验设备、材料和工具
1.奔腾2计算机或以上机型
2.turboc2,win-tc
四、实验内容和步骤
1. 建立一个含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
2. 往该顺序表中第i位置插入一个值为x的数据元素。
3. 从该顺序表中第j位置删除一个数据元素,由y返回。
4. 从该顺序表中查找一个值为e的数据元素,若找到则返回该数据元素的位置,否则返回“没有找到”。
五、程序
#include
#include
#define list_init_size 10
#define increment 2
typedef struct {
int *elem;
int length,listsize;
}sqlist; //类型定义
void initlist_sq(sqlist &L) //初始化顺序表
{ }
void output(sqlist L) //输出顺序表
{ }
void insertlist(sqlist &L,int i, int x) //顺序表中插入x { }
void deletelist(sqlist &L,int j, int y) //顺序表中删除y { }
int locateelem(sqlist &L,int e) //顺序表中查找e { }
void main()
{ }
【运行结果】
void initlist_sq(sqlist &L) //初始化顺序表
{
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L.elem) exit (OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
void output(sqlist L) //输出顺序表
{
for(int i=0;i<=L.length-1;i++)
printf("%d,",L.elem[i]);
return OK;
}
void insertlist(sqlist &L,int i, int x) //顺序表中插入x {
int p,q;
if(i<1||i>L.length+1)
return ERROR;
if(L.length>=L.listsize){
newbase=(int*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbasde)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1];
for(p=&(L.elem[L.length-1]);
p>=q;
--p*(p+1)=*p;
*p=x;
++L.length;
return ok;
}
void deletelist(sqlist &L,int j, int y) //顺序表中删除y {
int p,q;
if(i<1||I>L.length+1) return ERROR;
p=&(L.elem[i-1]);
y=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return ok;
}
int locateelem(sqlist &L,int e) //顺序表中查找e { int p;
i=1;
p=L.elem;
while(i<=L.length&&!(*p++,e))++i;
if(i<=L.length) return i;
else return 0;
}
void main()
{
int d,p,a,b;
int c;
initlist_sq(&L);
output( L);
insertlist( &L, d, a);
deletelist( &L, p, b);
locateelem( &L, c); }