顺序表和单链表实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验报告

一、顺序表操作验证

1. 实验目的

⑴掌握线性表的顺序存储结构;

⑵验证顺序表及其基本操作的实现;

⑶掌握数据结构及算法的程序实现的基本方法。

2. 实验内容

⑴建立含有若干个元素的顺序表;

⑵对已建立的顺序表实现插入、删除、查找等基本操作。

3.设计与编码

#include

#include

#include

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(rc<0)

rc=0;

if(rc>L->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;isize;i++)

printf("%d ",L->list[i]);

printf("\n");

}

int FindList(LIST *L,int item)

{

int i;

for(i=0;isize;i++)

if(item==L->list[i])

return i;

return -1;

int DeleteList1(LIST *L,int item)

{

int i,n;

for(i=0;isize;i++)

if(item==L->list[i])

break;

if(isize){

for(n=i;nsize-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(rc<0||rc>=L->size)

return -1;

for(n=rc;nsize-1;n++)

L->list[n]=L->list[n+1];

L->size--;

return 0;

}

{

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(r<0)

printf("有符合条件的元素,位置为:%d\n",r+1);

}

while(1)

{

printf("请输入删除元素值,输入0结束查找操作:");

fflush(stdin);

scanf("%d",&i);

if(i==0)

break;

r=DeleteList1(&LL,i);

if(r<0)

printf("没找到\n");

else{

printf("有符合条件的元素,位置为:%d\n线性表为:",r+1);

OutputList(&LL);

}

}

while(1)

{

printf("请输入删除元素位置,输入0结束查找操作:");

fflush(stdin);

scanf("%d",&r);

if(r==0)

break;

i=DeleteList2(&LL,r-1);

if(i<0)

printf("位置越界\n");

else{

相关文档
最新文档