- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.
.
数据结构实验报告
一、顺序表操作验证
1. 实验目的
⑴ 掌握线性表的顺序存储结构;
⑵ 验证顺序表及其基本操作的实现;
⑶ 掌握数据结构及算法的程序实现的基本方法。
2. 实验内容
⑴ 建立含有若干个元素的顺序表;
⑵ 对已建立的顺序表实现插入、删除、查找等基本操作。
3.设计与编码
#includestdio.h
#includestdlib.h
#includemalloc.h
struct LinearList
{
int *list;
int size;
int MaxSize;
};
typedef struct LinearList LIST;
void InitList(LIST *L,int ms)
{
if((L-list=(int*)malloc(ms *sizeof(int)))==NULL){
printf(内存申请错误!\n);
exit(1);
}
L-size=0;
L-MaxSize=ms;
}
int InsertList(LIST *L,int item,int rc)
{
int i;
if(L-size=L-MaxSize)
return-1;
if(rc0)
rc=0;
if(rcL-size)
rc=L-size;
for(i=L-size-1;i=rc;i--)
L-list[i+1]=L-list[i];
L-list[rc]=item;
L-size++;
return 0;
}
void OutputList(LIST *L)
{
int i;
for(i=0;iL-size;i++)
printf(%d ,L-list[i]);
printf(\n);
}
int FindList(LIST *L,int item)
{
int i;
for(i=0;iL-size;i++)
if(item==L-list[i])
return i;
return -1;
}
int DeleteList1(LIST *L,int item)
{
int i,n;
for(i=0;iL-size;i++)
if(item==L-list[i])
break;
if(iL-size){
for(n=i;nL-size-1;n++)
L-list[n]=L-list[n+1];
L-size--;
return i;
}
return -1;
}
int DeleteList2(LIST *L,int rc)
{
int i,n;
if(rc0||rc=L-size)
return -1;
for(n=rc;nL-size-1;n++)
L-list[n]=L-list[n+1];
L-size--;
return 0;
}
void main()
{
LIST LL;
int i,r;
printf(list addr=%p\tsize=%d\tMaxSize=%d\n,LL.list,LL.size,LL.MaxSize);
InitList(LL,100);
printf(list addr=%p\tsize=%d\tMaxSize=%d\n,LL.list,LL.size,LL.MaxSize);
while(1)
{
printf(请输入元素值,输入0结束插入操作:);
fflush(stdin);
scanf(%d,i);
if(i==0)
break;
printf(请输入插入位置:);
scanf(%d,r);
InsertList(LL,i,r-1);
printf(线性表为:);
OutputList(LL);
}
while(1)
{
printf(请输入查找元素值,输入0结束查找操作:);
fflush(stdin);
scanf(%d,i);
if(i==0)
break;
r=FindList(LL,i);
if(r0)
printf(没找到\n);
else
printf(有符合条件的元素,位置为:%d\n,r+1);
}
while(1)
{
printf(请输入删除元素值,输入0结束查找操作:);
fflush(stdin);
scanf(%d,i);
if(i==0)
break;
r=DeleteList1(LL,i);
if(r0)
printf(没找到\n);
else{
printf(有符合条件的元素,位置为:%d\n线性表为:,
文档评论(0)