顺序表的查找、插入与删除实验报告

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

《数据结构》实验报告一

学院:班级:

学号:姓名:

日期:程序名

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

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

1.从键盘输入10个整数,产生顺序表,并输入结点值。

2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找

不到,则显示“找不到”。

3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插

入在对应位置上,输出顺序表所有结点值,观察输出结果。

4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。

二、源程序及注释:

#include

#include

/*顺序表的定义:*/

#include

#define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/

typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct

{ DataType data[ListSize]; /*向量data用于存放表结点*/

int length; /*当前的表长度*/

}SeqList;

void main()

{

SeqList L;

int i,x;

int n=10; /*欲建立的顺序表长度*/

L.length=0;

void CreateList(SeqList *L,int n);

void PrintList(SeqList L,int n);

int LocateList(SeqList L,DataType x);

void InsertList(SeqList *L,DataType x,int i);

void DeleteList(SeqList *L,int i);

CreateList(&L,n); /*建立顺序表*/

PrintList(L,n); /*打印顺序表*/

printf("输入要查找的值:");

scanf("%d",&x);

i=LocateList(L,x); /*顺序表查找*/

printf("输入要插入的位置:");

scanf("%d",&i);

printf("输入要插入的元素:");

scanf("%d",&x);

InsertList(&L,x,i); /*顺序表插入*/

PrintList(L,n); /*打印顺序表*/

printf("输入要删除的位置:");

scanf("%d",&i);

DeleteList(&L,i); /*顺序表删除*/

PrintList(L,n); /*打印顺序表*/ }

/*顺序表的建立:*/

void CreateList(SeqList *L,int n)

{

int i;

for(i=0;i

scanf ("%d",&L->data[i]);

L->length=n;

}

/*顺序表的打印:*/

void PrintList(SeqList L,int n)

{

int i;

for(i=0;i

cout<

}

/*顺序表的查找:*/

int LocateList(SeqList L,DataType x)

{

int i=0;

while (i

++i;

if (i

return i+ 1;

else return 0;

}

/*顺序表的插入:*/

void InsertList(SeqList *L,DataType x,int i) {

int j;

if(i<1 || i>L->length +1)

{

printf("插入位置非法\n");

exit(0);

}

if(L->length >=ListSize)

{

printf("表空间溢出,退出运行\n");

exit(0);

}

for(j =L->length-1; j>=i-1;j--)

L->data[j+1]=L->data[j];

L->data[i-1]=x;

L->length++;

}

/*顺序表的删除:*/

void DeleteList(SeqList *L,int i)

{

int j;

if (L->length ==0)

{

printf("现行表为空,退出运行\n");

exit(0);

}

if (i<1 || i>L->length)

{

printf("删除位置非法\n");

exit(0);

}

for(j=i;j<=L->length -1;j++)

L->data[j-1]=L->data[j];

L->length --;

}

相关文档
最新文档