实验报告一 顺序表的操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);