实验报告一 顺序表的操作

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

《数据结构》实验报告一

系别:班级:

学号:姓名:

日期:指导教师:

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

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

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

从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。

从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。

从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。二、程序设计的基本思想,原理和算法描述:

(包括程序的结构,数据结构,输入/输出设计,符号名说明等)

三、源程序及注释:

#include

/*顺序表的定义:*/

#define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct

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

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

}SeqList;

/*子函数的声明*/

void CreateList(SeqList * L,int n); /*创建顺序表函数*/

int LocateList(SeqList L,DataType x); /*查找顺序表*/

void InsertList(SeqList * L,DataType x,int i); /*在顺序表中插入结点x*/

void DeleteList(SeqList * L,int i);/*在顺序表中删除第i个结点*/

void PrintList(SeqList L,int n); /*打印顺序表中前n个结点*/

void main()

{

SeqList L;

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

L.length=0;

/*调用创建线性表函数*/

printf("create function:\n");

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

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

/*调用查找函数*/

printf("search function:\n");

printf("input the data you want to search:");

scanf("%d",&x);

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

if (i==0)

printf("sorry,don't find %d!\n\n",x);

else

printf("i have find the %d,it locate in %d!\n\n",x,i);

/*调用插入函数*/

printf("Insert function:\n");

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

scanf("%d",&i);

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

scanf("%d",&x);

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

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

/*调用删除函数*/

printf("delete function:\n");

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

scanf("%d",&i);

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

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

}

/*顺序表的建立:*/

void CreateList(SeqList *L,int n)

{ int i;

for (i=0;i

{ printf("\ninput the %d data:",i+1);

scanf("%d",&(*L).data[i]);

}

(*L).length=n;

}

/*顺序表的查找:*/

int LocateList(SeqList L,DataType x)

{ int i=0;

while (i

++i;

if (i

else return 0;

}

/*顺序表的插入:*/

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

{/*将新结点x插入L所指的顺序表的第i个结点的位置上 */ int j;

if (i<0||i>(*L).length)

{

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

exit(0);

}

if ((*L).length>=ListSize)

{

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

exit(0);

相关文档
最新文档