数据结构实验一

2025-04-29

《数据结构》实验报告一

学校: 学号: 日期:

班级: 姓名: 程序名:

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

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

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

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

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

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

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

二、程序设计的基本思想,原理和算法描述:

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

三、源程序及注释:#include

/*顺序表的定义:*/ #define ListSize 100 typedef int DataType; typedef struct {

/*子函数的声明*/

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个结点*/

1

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

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

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

/*当前的表长度*/

}SeqList;

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

void main() {

/*调用查找函数*/

printf(“search function:\\n”);

printf(\ scanf(\

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

printf(\ else

printf(\,it locate in %d!\\n\\n\

/*调用插入函数*/

printf(“Insert function:\\n”);

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

scanf(\

printf(\输入要插入的元素:(input the data:)\scanf(\InsertList(&L,x,i); PrintList(L,n);

/*调用删除函数*/

printf(“delete function:\\n”);

printf(\输入要删除的位置:(input the position:)\ }

/*顺序表的建立:*/

void CreateList(SeqList *L,int n)

scanf(\DeleteList(&L,i); PrintList(L,n);

/*顺序表删除 */ /*打印顺序表 */

/*顺序表插入 */ /*打印顺序表 */

/*调用创建线性表函数*/ printf(“create function:\\n”); CreateList(&L,n); PrintList(L,n);

/*建立顺序表*/ /*打印顺序表*/

SeqList L; int n=10,x,i; L.length=0;

/*欲建立的顺序表长度*/

2

{ }

int i;

for (i=0;i

scanf(\

{printf(\ }

(*L).length=n;

/*顺序表的查找:*/

int LocateList(SeqList L,DataType x) { int i=0;

while (i<___=L.length-1______________ && ____L.data[i]_=!e______________) ++i;

if (i

/*顺序表的插入:*/

void InsertList(SeqList *L,DataType x,int i) {/*将新结点x插入L所指的顺序表的第i个结点的位置上 */ }

/*顺序表的删除:*/

void DeleteList(SeqList *L,int i) {/*从L所指的顺序表中删除第i个结点 */

int j;

if (i<1 || i>___L.length____________________________) { int j;

if (i<1 || i>__L.length____________________) { }

if ((*L).length>=___MaxSize_______________) { }

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

____L.data[k+1]=L.data[k]_______________________________ ; /*顺序表元素从后printf(\表空间溢出,退出运行\exit(0);

printf(\插入位置非法\exit(0);

向前依次后移*/

____L.data[i-1]=e_______________________________; /*将x插入第i个结点位置*/ _____L.length++___________________________; /*表长自增1*/

3

}

}

printf(\删除位置非法\exit(0);

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

____L.data[k-1]=L.data[k]________________________________; /*顺序表自第i个

结点开始,依次前移*/

______L.length--__________________________; /*表长自减1*/

/*顺序表的打印:*/

void PrintList(SeqList L,int n) { }

int i;

for (i=0;i

printf(\printf(\

printf(“the sequal list data is:”);

调试后的代码:

#include #define MaxSize 100 typedef int Datatype;

typedef struct {

Datatype data[MaxSize]; int length; }seqlist;

void GreatList(seqlist*L,int n); int GetList(seqlist L, Datatype x);

int IntList(seqlist *L,Datatype x,int i); int DelList(seqlist L,int i,Datatype *x); void PrintList(seqlist L,int n);

void main() {

seqlist L; int n=10,x,i; L.length=0;

4

printf(\ GreatList(&L,n); PrintList(L,n);

printf(\

printf(\ scanf(\ i=GetList(L,x);

if(i==0) {

printf(\ }

else {

printf(\ }

printf(\

printf(\ scanf(\

printf(\ scanf(\ IntList(&L,i,x); PrintList(L,n);

printf(\

printf(\ scanf(\

printf(\ scanf(\ DelList(L,i,&x); PrintList(L,n); //getch(); }

void GreatList(seqlist *L,int n) {

int i;

for(i=0;i

5

{

printf(\ scanf(\ }

(*L).length=n;

}

int GetList(seqlist L,Datatype x) {

int i; i=0;

while((i<=L.length-1)&&(L.data[i]!=x)) i++;

if(i

return(-1); }

int IntList(seqlist *L,Datatype x,int i) {

int k;

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

printf(\ return(0); }

if(L->length>=MaxSize) {

printf(\ return(0); }

for(k=L->length-1;k>=i-1;i++) {

L->data[k+1]=L->data[k]; L->data[i-1]=x; L->length++; }

6

return(1); }

int DelList(seqlist L,int i,Datatype *x) {

int k;

if((i<1)||(i>L.length)) {

printf(\ return(0); }

*x=L.data[i-1];

for(k=i;i<=L.length;k++) {

L.data[k-1]=L.data[k]; L.length--; }

return(1); }

void PrintList(seqlist L,int n) {

int i;

printf(\ for(i=0;i

printf(\ printf(\}

四、运行输出结果:

7

五、调试和运行程序过程中产生的问题及采取的措施:

开始只是一些小的问题,如丢了分号、括号,单词写错了,前后不一致等等。 最主要的问题就是函数检查没错误,但是运行中出现错误。第一个就是插入的函数能打印出来,但是出入不进去数;第二就是删除不了数。

8

六、对算法的程序的讨论、分析,改进设想,其它经验教训:

本次实验主要考查的的是顺序表的应用及编写,而其他的很多功能都是原来练习过的,相对来说比较容易。但是完成本次实验收获还是很多的,不仅仅实在新知识上的加深,进一步了解顺序表。从这次的试验中认识到了自己还有没有学习到的地方,今后还要认真吸取验教训。

9

七、对实验方式、组织、设备、题目的意见和建议:

希望老师以后可以给我们多些自己动手实践的机会,可以在课堂上多让我们动手去上机操作,老师带领我们完成主要部分,或给一些提示指导。以后课下及时复习,认真看好课本,希望老师课下及时给予指导帮助。

10


数据结构实验一.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:实验班 承德县一中2024高二第三次考试历史题

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219