数据结构实验一_第1页
数据结构实验一_第2页
数据结构实验一_第3页
数据结构实验一_第4页
数据结构实验一_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据结构》实验报告一

学校:班级:

学号:姓名:

日期:程序名:

一、上机实验的问题和要求:

顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查

找、插入与删除。具体实现要求:

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论