指导书_实验三数据结构(顺序表)_第1页
指导书_实验三数据结构(顺序表)_第2页
指导书_实验三数据结构(顺序表)_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三数据结构 ( 顺序表的建立于操作 )实验目的 理解数据结构的顺序存储关系,掌握基本操作算法;实验环境 TurboC 或 VC6.0实验步骤 按要求建立 C 源程序,观察并分析结果。说明:以下程序构造顺序表SeqList,并且定义了顺序表的常用操作,主函数依次调用这 些函数,完成相应操作。源程序如下:#include "stdio.h"#include "stdlib.h"/* 以下定义常量 ,*/#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /顺

2、序表最大长度/* 以下定义类型的同义字 */ typedefint Status; / 凡遇到 Status 即为 int 类型 typedefintElemType; / 凡遇到 ElemType 即为 int 类型/* 以下定义顺序表 SeqList*/typedefstructElemType dataMAXSIZE; /data 用于存放表结点 int length; / 表长度SeqList;/* 顺序表初始化 */Status InitSeqList(SeqList *seqList) / *seqListL 表示指向顺序表 SeqList 的指针 seqList->leng

3、th=0; / 置为空表return OK;/* 求顺序表的长度 */intGetSeqListLen(SeqList *seqList)return seqList->length;/* 插入元素 (在第 n 个元素之前的位置插入新元素 )*/Status Insert(SeqList *seqList,intn,ElemType e)int k;/ 检查数组是否已满if (seqList->length>=MAXSIZE) return ERROR;/ 检查 n 的位置是否超出范围if (n<1|n>seqList->length+1) return E

4、RROR;/ 若插入数据位置不在表尾if (n<=seqList->length)/ 将要插入位置之后元素依次向后移动一位for (k=seqList->length-1;k>=n-1;k-)seqList->datak+1=seqList->datak;/ 将新元素插入到腾出的位置,并将表长加 1seqList->datan-1=e;seqList->length+;return OK;/* 删除元素 (删除第 n 个元素 )*/Status Delete(SeqList *seqList,intn,ElemType *e) int k;/ 判

5、断数组是否为空if (seqList->length=0) return ERROR;/判断 n 的位置是否合法if (n<1|n>seqList->length) return ERROR;*e=seqList->datan-1;/ 如果删除不是最后位置if (n<seqList->length)/ 将删除位置后继元素依次前移for (k=n;k<seqList->length;k+)seqList->datak-1=seqList->datak;/ 表长减 1seqList->length-;return OK;/*查

6、找第n个元素*/intGetDataByIndex(SeqList *seqList,int n)/ 检查位置是否超出范围if (n<1|n>seqList->length) return ERROR; return seqList->datan-1;/* 打印结果 */void Display(SeqList *seqList)inti;printf("n* 展示数据 *n");for (i=0;i<seqList->length;i+)printf("%dn",seqList->datai); printf(

7、"n");/*以下是主程序 */void main()/ 声明变量SeqListseqList; / 创建顺序表 inti,j,k,m,elem; / 声明变量printf("n*初始化*n");i=InitSeqList(&seqList);/ 调用 InitSeqList 函数,其中 & 符号表示地址 printf(" 初始化后表的长度为: %dn",seqList.length);插入五条数据 *n");printf("n* for (j=1;j<=5;j+) printf("

8、 输入第 %d 条数据: ",j); scanf("%d",&m);i=Insert(&seqList,j,m);/ 调用 Insert 函数,在表头依次插入 5 个数 Display(&seqList); / 调用 Display 函数,显示顺序表printf("n* 删除一条数据 *n"); printf(" 删除哪条数据? ");scanf("%d",&j);i=Delete(&seqList,j,&elem); / 调用 Delete 函数,删除指定

9、数据if (i=OK) printf(" 删除成功 n");Display(&seqList); / 调用 Display 函数,显示顺序表printf("n*按位置查找元素*n");printf(" 查找第几条数据? ");/ 调用 GetDataByIndex 函数scanf("%d",&j); k=GetDataByIndex(&seqList,j); printf("n 第 %d 个元素为 %dn",j,k);printf("n*获取表的当前长度 *n&

10、quot;);k=GetSeqListLen(&seqList); / 调用 GetSeqListLen 函数 printf(" 当前表中还有 %d 个元素 nn",k); getchar(); 程序运行结果:A*j I上吕 卜-MA-AA4MA-A-M HA-AMi血苗氐古的r< _?.Y Y-f起i豊73413b惮*"轉屮挪|J» eg 誉挂第几華敌据十J"第仆素畑E翼岸算耳*屛里和耳T 的当前卡 IT 士前 X + v-rTT-'?H19 anu Ike y tn cont i-niuE作业提交要求:1、写出顺序表的插入、删除、查找第n个记录的过程。(1) 插入:检查数组是否满、检查第N的位子是否超出范围,若插入位子不在数组 最后方,则将元素插入位子后面的元素全部往后移一位,并将数组加一位;如 果假如元素位在数组最后面,则将数组列长加一并将元素插入最后一位。(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论