版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据结构》实验报告一
学校:班级:
学号:姓名:
日期:程序名:
一、上机实验的问题和要求:
顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查
找、插入与删除。具体实现要求:
1.从键盘输入10个整数,产生顺序表,并输入结点值。
2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找
不到,则显示“找不到”。
3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插
入在对应位置上,输出顺序表所有结点值,观察输出结果。
4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。
二、程序设计的基本思想,原理和算法描述:
(包括程序的结构,数据结构,输入/输出设计,符号名说明等)
三、源程序及注释:ttinclude<stdio.h>
/*顺序表的定义:*/
#defineListSize100/*表空间大小可根据实际需要而定,这里假设为100*/
typedefintDataType;/*DataType可以是任何相应的数据类型如int,float或char*/
typedefstruct
{DataTypedata[ListSize];/*向量data用于存放表结点*/
intlength;/*当前的表长度*/
}SeqList;
/*子函数的声明*/
voidCreateList(SeqList*L,intn);/*创建顺序表函数*/
intLocateList(SeqListL,DataTypex);/*查找顺序表*/
voidTnsertList(SeqList*L,DataTypex,inti);/*在顺序表中插入结点x*/
voidDeleteList(SeqList*L,inti);/*在顺序表中删除第i个结点*/
voidPrintList(SeqListL,intn);/*打印顺序表中前n个结点*/
voidmain()
(
SeqListL;
intn=10,x,i;/*欲建立的顺序表长度*/
L.length=0;
/*调用创建线性表函数*/
printf(''createfunction:Xn^);
CreateList(&L,n);/*建立顺序表*/
PrintList(L,n);/*打印顺序表*/
/*调用查找函数*/
printf(^searchfunction:\n,9;
printf("inputthedatayouwanttosearch:");
scanf&x);
i=LocateList(L,x);/*顺序表查找*/
if(i==0)
printf("sorry,don'tfind%d!\n\n〃,x);
else
printf(,zihavefindthe%d,itlocatein%d!\n\n,z,x,i);
/*调用插入函数*/
printf("Insertfunction:\n");
printf(〃输入要插入的位置:(inputtheposition:),z);
scanf(,z%dz/,&i);
printf(〃输入要插入的元素:(inputthedata:)");
scanf&x);
InsertList(&L,x,i);/*顺序表插入*/
PrintList(L,n);/*打印顺序表*/
/*调用删除函数*/
printf("deletefunction:\n");
printf("输入要删除的位置:(inputtheposition:)");
scanf&i);
DeleteList(&L,i);/*顺序表删除*/
PrintList(L,n);/*打印顺序表*/
/*顺序表的建立:*/
voidCreateList(SeqList*L,intn)
{inti;
for(i=0;i<n;i++)
{printf(,z\ninputthe%ddata:",i+1);
scanf("%d”,&(*L).data[i]);
}
(*L).length二n;
)
/*顺序表的查找:*/
intLocateList(SeqListL,DataTypex)
{inti=0;
while(i<__=L.length-1&&____L.data[i]_=!e)
++i;
if(i<L.length)returni+1;
elsereturn0;
)
/*顺序表的插入:*/
voidInsertList(SeqList*L,DataTypex,inti)
{/*将新结点x插入L所指的顺序表的第i个结点的位置上*/
intj;
if(i<l||i>_L.length)
(
printf(〃插入位置非法”);
exit(0);
)
if((*L).length>=__MaxSize)
(
printf(〃表空间溢出,退出运行〃);
exit(0);
)
for(j=(*L).length-1;j>=i-l;j-)
―L.data[k+l]=L.data[k];/*顺序表元素从后
向前依次后移*/
L.data[i-l]=e;/*将x插入第i个结点位置*/
L.1ength++;/*表长自增]*/
)
/*顺序表的删除:*/
voidDeleteList(SeqList*L,inti)
{/*从L所指的顺序表中删除第i个结点*/
intj;
if(i<l||i>___L.length)
printf(〃删除位置非法〃);
exit(0);
)
for(j=i;j<=(*L).length-1;j++)
_L.data[k-l]=L.data[k]/*顺序表自第i个
结点开始,依次前移*/
[,.length—―/*表长自减1*/
)
/*顺序表的打印:*/
voidPrintList(SeqListL,intn)
{inti;
printf(uthesequal1istdatais:");
for(i=0;i<n;i++)
printf(,z%dL.data[i]);
printf(〃\n\n〃);
}
调试后的代码:
#include<stdio.h>
^defineMaxSize100
typedefintDatatype;
typedefstruct
(
Datatypedata[MaxSize];
intlength;
}seqlist;
voidGreatList(seqlist*L,intn);
intGetList(seqlistL,Datatypex);
intIntList(seqlist*L,Datatypex,inti);
intDelList(seqlistL,inti,Datatype*x);
voidPrintList(seqlistL,intn);
voidmain()
(
seqlistL;
intn=10,x,i;
L.length=0;
printf("greatfunction:\n");
GreatList(&L,n);
PrintList(L,n);
printf(^getfunction:\n/z);
printf(^pleaseinputyourwanttosearch'll");
scanf("%d",&x);
i=GetList(L,x);
if(i==0)
(
printf(^Xnsorry,don'tfind%d\n”,x);
}
else
(
printf("\nhavefindthe%d,itlocatedin%d\n”,x,i);
)
printf("\nlnsfunction:\n");
printf(^Xnpleaseinputtheposition:\n");
scanf("%d",&i);
printf(^Xnpleaseinputthedata:\nz,);
scanf&x);
IntList(&L,i,x);
PrintList(L,n);
printf("\ndelfunction:\n^);
printf(^\npleaseinputyouwanttodeleteposition:\n");
scanf&i);
printf(^Xnpleaseinputyouwantdeletenumber:");
scanf&x);
DelList(L,i,&x);
PrintList(L,n);
//getchO;
)
voidGreatList(seqlist*L,intn)
inti;
for(i=0;i<n;i++)
printf(^Xnpleaseinputthe%ddata\n”,i+1);
scanf("%d”,&(*L).data[i]);
)
(*L).length=n;
)
intGetList(seqlistL,Datatypex)
(
inti;
i=0;
while((i<=L.length-1)&&(L.data[i]!=x))
i++;
if(i<L.length)
return(i+1);
else
return(-1);
)
intIntList(seqlist*L,Datatypex,inti)
(
intk;
if((i<l)||(i>L->length))
(
printf(z,\nThepositioniswrong'n");
return(0);
)
if(L->length>=MaxSize)
(
printf("\nempty\n");
return(0);
)
for(k=L->length-l;k>=i-l;i++)
(
L->data[k+1]=L->data[k];
L->data[i-l]=x;
L->length++;
return(1);
)
intDelList(seqlistL,inti,Datatype*x)
(
intk;
if((i<l)||(i>L.length))
(
printf("\nThepositioniswrong\n");
return(0);
)
*x=L.data[i-l];
for(k=i;i<=Llength;k++)
(
L.data[k-l]=L.data[k];
L.length—;
)
return(1);
)
voidPrintList(seqlistL,intn)
(
inti;
printf("\nThesequalListDatais:\n");
for(i=0;i<n;i++)
printf("%dL.data[i]);
printf("\n");
)
四、运行输出结果:
inputthe7data:7
inputthe8data:8
inputthe9data:9
inputthe10data:10
thesequa11istdatais:lZ345678S10
searchfunction:
inputthedatayouwanttosearch:4
ihavefindthe4,itlocatein4
Insertfunction:
inputtheposition:6
inputthedata:456
thesequa11istdatais:1Z34545667891。
deletefunction:
inputtheposition:3
thesequa11istdatais:1245456678910
五、调试和运行程序过程中产生的问题及采取的措施:
开始只是一些小的问题,如丢了分号、括
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 22884-2024皮革牛蓝湿革规范
- GB/T 44675-2024地毯泡沫背衬剥落性的测定
- 2024年度保险公司保险产品销售合同
- 《胆总管结石护理》课件
- 《地球陆地资源》课件
- 2024年度股权转让合同标的评估与支付条件
- 2024年度版权租赁合同标的版权描述及租赁方式详细说明
- 2024年度无人机研发合同2篇
- 2024全国交通安全教育日知识宣讲课件
- 2024年度企业员工劳动合同标准文本
- GB/T 12611-1990金属零(部)件镀覆前质量控制技术要求
- 2023年学校音乐器材管理室工作总结
- 钢框架结构优秀毕业设计计算书
- 人身保护令申请书范文精选5篇
- 第四讲马克思主义的唯物辩证法课件
- 尿崩症护理查房
- 二年级语文上册 第八单元 集体备课+教材分析
- 2022秋国开农村社会学形考任务3试题及答案
- 《劳动关系协调员》教学计划及教学大纲
- 中国历史文化名城-南京课件
- 城市桥梁安全性评估规程DB50-T 273-2021
评论
0/150
提交评论