- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一顺序表的建立和基本运算.doc
实验一 顺序表的建立和基本运算
一、实验目的
掌握顺序表的存储结构定义;
掌握顺序表的初始化、销毁及插入、删除基本操作工作原理及其C语言实现;
掌握顺序表的查找操作工作原理及其C语言实现;
(选作)设计基于顺序表的应用程序;
二、实验环境
PC微机,Windows,Visual C++
三、实验内容
1、线性表的顺序存储结构实现
1)测试工程
(1)启动VC++6.0,选择菜单“文件”-“新建”;
(2)在打开的对话框中选中“工程”选项卡;
(3)选择工程类型“Win32 Console Application”;
(4)在“工程名称”处输入工程的名字lab1;
(5)在“位置”处点击按钮,选择工程存放的目录位置;
(6)按“确定”按钮,在出现的向导对话框中,选择“一个空工程”,按“完成”。
完成以上步骤后,VC++6.0将在指定的目录位置下创建与工程名同名的目录(如c:\lab1);该目录包含了测试工程的所有文件,其中lab1.dsw是工程文件,是工程的主文件。
2)测试程序
(1)新建或打开测试工程(lab1)后,选择菜单“文件”-“新建”;
(2)在打开的对话框中选中“文件”选项卡;
(3)选择文件类型“C++ Source File”;
(4)在“文件名”处输入程序文件的名字testm;
(5)按“确定”按钮,进入代码编写窗口。
完成以上步骤后,VC++6.0将在指定的工程目录下创建源代码文件(如testm.cpp),以下编写的代码均可放入该文件。
3)实验步骤
(1)输入以下参考程序代码段,仔细阅读程序注释,正确理解各函数的功能;
#includemalloc.h // malloc()等
#includestdio.h // NULL, printf()等
// 函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
//-------- 线性表的动态分配顺序存储结构 -----------
#define LIST_INIT_SIZE 100 //顺序表存储空间初始尺寸
#define LIST_INCREMENT 10 //顺序表存储空间分配增量
typedef int ElemType; //顺序表元素的数据类型为整数
//存储结构定义:顺序表
typedef struct {
ElemType *elem; //存储表元素的数组指针
int length; //表长度
int listsize; //数组尺寸
} SqList;
//-------- 线性表的基本运算 -----------------------------
//运算1:初始化空顺序表L
Status InitList(SqList *L) {// 算法2.3
L-elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //分配数组空间
if (!L-elem) return OVERFLOW; //若分配失败,函数结束(返回值=-2)
L-length=0; //表长度初值为0
L-listsize=LIST_INIT_SIZE; //表空间初始尺寸
return OK;
}
//运算2:销毁顺序表L
void DestroyList(SqList *L) {
free(L-elem); //释放表的数组存储空间
L-elem=NULL; //清空指向数组的指针及表示表长度、数组尺寸的指示变量
L-length=0;
L-listsize=0;
}
//运算3:在顺序表L中第i个位置前插入新元素e
Status ListInsert(SqList *L,int i,ElemType e) { //算法2.4
ElemType *newbase, *q, *p;
if(i1||iL-length+1) return ERROR; //若指定的插入位置i值不合法,则退出函数
if(L-length=L-listsize){ //当前表元素数组已满,增加数组空间的分配
if(!(newbase=(int*)realloc(L-elem,(L-listsize+LIST_INCREMENT)*sizeof(int))))
return OVERFLOW; // 存储分配失败
L-elem=newbase; // 新基址
L-listsize+=L
文档评论(0)