顺序表的操作实验报告.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除顺序表的基本操作一、实验目的1、复习C+语言程序设计中的知识。2、熟悉线性表的逻辑结构。3、熟悉线性表的基本运算在两种存储结构上的实现。4、掌握顺序表的存储结构形式及其描述和基本运算的实现。5、熟练掌握动态链表结构及有关算法的设计二、实验内容实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。基本要求(1).依次从键盘读入数据,建立带头结点的顺序表;(2).输出顺序表中的数据元素(3).根据指定条件能够取元素和修改元素;(4).实现在指定位置插入和删除元素的功能。三、实验步骤、调试及输出结果() . 数据结构与核心算法的设计描述:#include <stdio.h>#include <stdlib.h>/*顺序表的定义:*/#define ListSize 100typedef struct int elemListSize;/*向量elem用于存放表结点*/ int length;/*当前的表长度*/ SeqList;/*顺序表的建立:*/void CreateList(SeqList *L,int n) int i; printf("please input n numbers:n"); for(i=1;i<=n;i+) scanf("%d",&L->elemi); L->length=n;/*顺序表的打印:*/void PrintList(SeqList *L,int n) int i; printf("the sqlist isn"); for(i=1;i<=n;i+) printf("%d ",L->elemi); printf("n");/*顺序表的查找:*/int LocateList(SeqList *L,int x) int i; i=1; while (L->elemi)!=x) &&(i<=10) +i; if (L->elemi)=x) return(i); else return(0);/*顺序表的插入:*/void InsertList(SeqList *L,int x,int i) int j; if (i<1 |i>L->length+1) printf("no insert position!n"); else for(j=L->length;j>=i;j-) L->elemj+1=L->elemj; L->elemi=x; L->length+;/*顺序表的删除:*/void DeleteList(SeqList *L,int i) int j; if (i<1 |i>L->length) printf("no delete position!n"); else for(j=i;j<=(L->length)-1;j+) L->elemj=L->elemj+1; L->length-;void main() SeqList L;int i,x;int n=10;/*当前顺序表的长度*/L.length=0;CreateList(&L,n);/*建立顺序表*/PrintList(&L,L.length);/*输出顺序表*/printf("input the research element:");scanf("%d",&x);i=LocateList(&L,x); /*顺序表查找*/printf("the research position is %dn",i);printf("input the position of insert:");scanf("%d",&i);printf("input the value of insert:");scanf("%d",&x);InsertList(&L,x,i); /*顺序表插入*/PrintList(&L,L.length);/*输出顺序表*/printf("input the position of delete:");scanf("%d",&i);DeleteList(&L,i);/*顺序表删除*/PrintList(&L,L.length); /*输出顺序表*/ (二). 调试及输出结果测试数据: 1、输入n个数; 2、输出顺序列表;3、顺序表的查找;4.顺序表的插入;5、顺序表的删除;数据测试如下截图:四、实验讨论与总结:通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C+语言,将各种操作描述出来构成算法。在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。【精品文档】第 4 页