实验报告 线性表的顺序存储.doc
文本预览下载声明
实 验 报 告
试验项目名称 线性表的顺序存储
结构上的操作
所属课程名称 数据结构
实 验 类 型 验证试验
试 验 日 期2010/11/21
学院:数学与信息科学学院
专业:信息与计算科学
班级:082班
姓名:李晓璐
学号:0801214037
实验 线性表的顺序存储结构上的操作
实验目的
1、掌握用上机调试线性表的基本方法;
2、掌握线性表的顺序存储结构的基本操作,插入、删除以及有序表合并等运算在顺序存储结构上的运算。
二、实验环境
硬件:PC 微型计算机、256M以上内存,40G以上硬盘。
软件:Windows XP,Turbo C/C++
三、实验内容
线性表十二种基本操作的实现,其中线性表的插入、删除以及两个有序表的
合并操作在顺序存储结构上以如下形式体现:
当我们要在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若要删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。已知线形表La和Lb中的数据元素按值非递减排序.并归La和Lb得到新的线形表Lc,Lc的数据元素也按值非递减排序。可设两个指针i和j分别指向La和Lb中的某个元素,若i当前所指的元素为a,j当前所指的元素为b,则当前应插入到Lc中的元素为c。当a≤b时,c=a;当ab时,c=b。显然,指针i和j的初值均为1,在所指元素插入Lc之后,在La或Lb中顺序后移。
四、实验步骤
1、本实验的程序如下
“function.h”
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define TURE 1
#define FALSE 0
#define OVERFLOW 0
#define INFEASIBLE 0
typedef int Status;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
const int n=10;
“SqList.h”
Status InitList_Sq(SqList *L);
Status DestroyList(SqList *L);
Status ClearList(SqList *L);
Status ListEmpty(SqList *L);
int ListLength(SqList *L);
Status GetElem(SqList *L,int i,ElemType *e);
ElemType GetElem(SqList *L,int i);
int LocateElem(SqList *L,ElemType e,Status (*compare)(ElemType a,ElemType e));
Status PriorElem(SqList *L,ElemType cur_e,ElemType *pre_e);
ElemType PriorElem(SqList *L,ElemType cur_e);
Status NextElem(SqList *L,ElemType cur_e,ElemType *next_e);
ElemType NextElem(SqList *L,ElemType cur_e);
Status ListInsert_Sq(SqList *L,int i,ElemType e);
Status ListDelete_Sq(SqList *L,int i,ElemType *e);
ElemType ListDelete_Sq(SqList *L,int i);
void PrintSqList(SqList *L);
Status ListTraverse(SqList *L,Status (*visit)(ElemType *a));
Status EnterList_Sq(SqList *L);
Status compare(ElemType a,ElemType e);
Status visit(ElemType *a);
Status Union(SqList *La,SqList *Lb);
Status MergeList(SqList *La,SqList *Lb,SqList *Lc);
Status Sort_Increas
显示全部