1、淮海工学院计算机科学系实 验 报 告 书课程名: 数据结构 题 目: 线性表数据结构试验 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 数据结构 实验报告 - 1 -线性表实验报告要求1 目的与要求:1)掌握线性表数据结构的基本概念和抽象数据类型描述;2)熟练掌握线性表数据结构的顺序和链式存储存表示;3)熟练掌握线性表顺序存储结构的基本操作算法实现; 4)熟练掌握线性表的链式存储结构的基本操作算法实现;5)掌握线性表在实际问题中的应用和基本编程技巧;6)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果) ;7)按照报告格式和内容要求
2、,认真书写实验报告,并在试验后的第三天提交电子(全班同学提交到学委,再统一打包提交给老师)和纸质(每班每次 5 份,学委安排,保证每个同学至少提交一次) ;8)积极开展实验组组内交流和辅导,严禁复制和剽窃他人实验成果,一旦发现严肃处理;9)上实验课前,要求每个同学基本写好程序,并存储在自己的 U 盘上,用于实验课堂操作时调试和运行。凡不做准备,没有提前编写程序者,拒绝上机试验。2 实验内容或题目一、顺序表的基本操作实现实验要求:数据元素类型 ElemType 取整型 int。按照顺序存储结构实现如下算法:1)创建任意整数线性表(即线性表的元素值随机在键盘上输入)的顺序存储结构(即顺序表) ,长
3、度限定在 25 之内;2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值) ;3)在顺序表中查找第 i 个元素,并返回其值;4)在顺序表第 i 个元素之前插入一已知元素;5)在顺序表中删除第 i 个元素;6)求顺序表中所有元素值(整数)之和;二、链表(带头结点)基本操作实验要求:数据元素类型 ElemType 取字符型 char。按照动态单链表结构实现如下算法: 数据结构 实验报告 - 2 -1)按照头插法或尾插法创建一个带头结点的字符型单链表(链表的字符元素从键盘输入) ,长度限定在 10 之内;2)打印(遍历)该链表(依次打印出表中元素值,注意字符的输入顺序与链表的结点顺序) ;3
4、)在链表中查找第 i 个元素,i 合法返回元素值,否则,返回 FALSE;4)在链表中查找与一已知字符相同的第一个结点,有则返回 TRUE,否则,返回 FALSE;5)在链表中第 i 个结点之前插入一个新结点;6)在线性表中删除第 i 个结点;7)计算链表的长度。3 实验步骤与源程序一、 顺序表的基本操作实现实验Common.h#include #include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0Seqlist.h#define ElemType int#define MAXSIZE 25 type
5、def struct ElemType elemMAXSIZE; int last; SeqList;#include “common.h“#include “seqlist.h“int Locate(SeqList L, int n)int i=0; while (iL-last+2) printf(“插入位置 i 值不合法“);return(ERROR);if(L-last= MAXSIZE-1)printf(“表已满无法插入“);return(ERROR);for(k=L-last;k=i-1;k-) L-elemk+1=L-elemk;L-elemi-1=e; L-last+;retu
6、rn(OK);int DelList(SeqList *L,int i,ElemType *e) int k;if(iL-last+1) 数据结构 实验报告 - 4 - printf(“删除位置不合法!“);return(ERROR);*e = L-elemi-1; for(k=i; klast; k+) L-elemk-1 = L-elemk; L-last-;return(OK);int AddList(SeqList *L) int k,s=0;for(k=0;klast;k+) s=s+L-elemk;return s;void main()SeqList l;int p,q,r,*q
7、1;int i;q1=(int*)malloc(sizeof(int);printf(“请输入线性表的长度:“);scanf(“%d“,l.last = r-1;printf(“请输入线性表的各元素值:n“);for(i=0; i#include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSELinklist.htypedef char ElemType;typedef struct Node ElemType data;struct Node * next;Node, *LinkList; #include #i
8、nclude #define ElemType chartypedef struct Node ElemType data;struct Node * next;Node, *LinkList; 数据结构 实验报告 - 7 -LinkList CreateFromHead() LinkList L;Node *s;char c;int flag=1,i=1;L=(LinkList)malloc(sizeof(Node); L-next=NULL; while(flags-next=L-next; L-next=s;elseflag=0;i+;return L;Node *search(Link
9、List L,int i)int j=0;Node *p; 数据结构 实验报告 - 8 -p=L;while(p-next!=NULLj+;if(i=j) return p;else return NULL;Node *locate(LinkList L,ElemType key)Node *p;p=L-next;while(p!=NULL)if(p-data!=key)p=p-next;else break;return p;void InsList(LinkList L,int i,ElemType e)Node *p,*s;int k;p=L;k=0;while(p!=NULLk=k+1;if(k!=i-1)printf(“error!“);s=(Node *)malloc(sizeof(Node);s-data=e;s-next=p-next;p-next=s;void delLink(LinkList L,int i,ElemType *e)Node *p,*r;int k;p=L;k=0;while(p-next!=NULLk=k+1;if(k!=i-1)printf(“位置不合理“);