实验一顺序表的建立和基本运算.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档