实验一-顺序表的基本操作
更新时间:2023-12-09 13:01:01 阅读量: 教育文库 文档下载
实验一 顺序表的基本操作
一、实验目的
1.掌握顺序表及其基本操作的实现。
2.掌握利用VC/TC实现数据结构的编程方法。
3.通过上机实践进一步加深对线性表的顺序存储方式理解。 4.通过上机实践加强利用数据结构解决实际应用问题的能力。 二、实验要求
1.实验前做好充分准备,包括复习第一章、第二章所学内容,事先预习好本次实验内容。
2.实验时记录实验结果,按要求完成各题。
3.实验结束后,给出实验总结与分析并及时给出本次实验的实验报告。 三、实验内容与要求
实验题目:顺序表的定义及其相关操作算法的实现
要求:编程实现顺序表的类型定义及顺序表的初始化操作、插入操作、删除操作、取元素操作、输出操作等,并对其进行验证。 四、实验程序示例
1、顺序表实验程序示例 #include \#include \
/*-------------(1)预定义常量及类型-----------------*/ #define OK 1 #define ERROR 0
#define OVERFLOW -2 #define TRUE 1 #define FALSE 0 typedef int Status;
/*-------(2)顺序表类型及其基本操作函数的定义---------*/ #define InitSize 100 #define INCR 20
typedef int ElemType; /*定义元素类型为int类型*/
typedef struct
{ ElemType *Elem; int Length; int ListSize;
}SqList; /*SqList类型为顺序表类型*/
Status InitList_sq(SqList *L) /*初始化操作函数定义*/
{ L->Elem=(ElemType*)malloc(InitSize*sizeof(ElemType));
if (!(L->Elem))return(OVERFLOW); L->Length=0; L->ListSize=InitSize; return OK; }
Status ListInsert_sq(SqList *L, int i, ElemType e) /*插入操作函数定义*/ {
/* 写出你的代码 */ }
Status ListDelete_sq(SqList *L, int i) /*删除第i 个位置的元素 */ {
/* 写出你的代码 */ }
Status LocateElem(SqList *L, ElemType e) /*查找值为e的元素的位置 */ {
/* 写出你的代码 */ }
/* 以下为选作的 */ /*
void exchange ( SqList *L,int m ,int n) // 本算法实现顺序表中前 m 个元素和后 n 个元素的互换
void purge(SqList *L ) // 删除顺序表 L 中冗余元素 void ReverseSeqList(SqList &L) //倒置
void MergeList(SqList la,SqList lb,Sqlist &lc)//有数据类型为整型顺序表La和Lb,其元素均按从小到大升序排列,编写一个算法将它们合并成一个表Lc,且Lc的元素也是按升序排列。 */
void ListOutput_sq(SqList L)/*顺序表输出操作*/ { int i;
for(i=0;i<=L.Length-1;i++) printf(\ printf(\}
/*其它操作如删除、查找、判空等操作略*/ /*-------------(3)主函数定义--------------------*/ main()
{ SqList La;
int i,c;
InitList_sq(&La);
printf(\
scanf(\
printf(\
printf(\ for (i=0;i printf(\ ListOutput_sq(La); printf(\ ListInsert_sq(&La,1,999); ListOutput_sq(La); printf(\ ListInsert_sq(&La,4,888); ListOutput_sq(La); printf(\ ListInsert_sq(&La,La.Length+1,111); ListOutput_sq(La); printf(\ ListDelete_sq(&La, i); ListOutput_sq(La); printf(\ LocateElem(&La, 888); ListOutput_sq(La); getch(); } 五、实验小结 1、上机测试程序,写出运行结果。 2、整理实验结果,小结实验心得体会 #include \#include \ /*-------------(1)预定义常量及类型-----------------*/ #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define TRUE 1 #define FALSE 0 typedef int Status; /*-------(2)顺序表类型及其基本操作函数的定义---------*/ #define InitSize 100 #define INCR 20 typedef int ElemType; /*定义元素类型为int类型*/ typedef struct { ElemType *Elem; int Length; int ListSize; }SqList; /*SqList类型为顺序表类型*/ Status InitList_sq(SqList *L) /*初始化操作函数定义*/ { L->Elem=(ElemType*)malloc(InitSize*sizeof(ElemType)); if (!(L->Elem))return(OVERFLOW); L->Length=0; L->ListSize=InitSize; return OK; } Status ListInsert_sq(SqList *L, int i, ElemType e) /*插入操作函数定义*/ { int j; ElemType *newaddress; if (i<1||i>L->Length+1) return ERROR; if (L->Length>=L->ListSize){ newaddress=(ElemType*)realloc(L->Elem,(L->ListSize+INCR)*sizeof(ElemType)); if(!newaddress)exit(OVERFLOW); L->Elem=newaddress; L->ListSize+=INCR; } for (j=L->Length;j>=i;j--) L->Elem[j]=L->Elem[j-1]; L->Elem[j]=e; L->Length++; } Status ListDelete_sq(SqList *L, int i) /*删除第i 个位置的元素 */ { int j; if((i<1)||(i>L->Length)) return ERROR; for(j=i;j<=L->Length-1;j++) L->Elem[j-1]=L->Elem[j]; L->Length--; } Status LocateElem(SqList *L, int e) /*查找值为e的元素的位置 */ { int i=0; ElemType *p; p=L->Elem; while(i<=L->Length&&*p++!=e) i++; if (i <= L->Length) return i; else return 0; } /* 以下为选作的 */ /* void exchange ( SqList *L,int m ,int n) // 本算法实现顺序表中前 m 个元素和后 n 个元素的互换 void purge(SqList *L ) // 删除顺序表 L 中冗余元素 void ReverseSeqList(SqList &L) //倒置 void MergeList(SqList la,SqList lb,Sqlist &lc)// 有数据类型为整型顺序表La和Lb,其元素均按从小到大升序排列,编写一个算法将它们合并成一个表Lc,且Lc的元素也是按升序排列。 */ void ListOutput_sq(SqList L)/*顺序表输出操作*/ { int i; for(i=0;i<=L.Length-1;i++) printf(\ printf(\} /*其它操作如删除、查找、判空等操作略*/ /*-------------(3)主函数定义--------------------*/ main() { SqList La; int i,c,f; InitList_sq(&La); printf(\ scanf(\ printf(\ printf(\ for (i=0;i printf(\ ListOutput_sq(La); printf(\ ListInsert_sq(&La,1,999); ListOutput_sq(La); printf(\ ListInsert_sq(&La,4,888); ListOutput_sq(La); printf(\ ListInsert_sq(&La,La.Length+1,111); ListOutput_sq(La); printf(\ ListDelete_sq(&La, 3); ListOutput_sq(La); printf(\ f=LocateElem(&La, 888); printf(\ getch(); } printf(\ ListOutput_sq(La); printf(\ ListInsert_sq(&La,1,999); ListOutput_sq(La); printf(\ ListInsert_sq(&La,4,888); ListOutput_sq(La); printf(\ ListInsert_sq(&La,La.Length+1,111); ListOutput_sq(La); printf(\ ListDelete_sq(&La, 3); ListOutput_sq(La); printf(\ f=LocateElem(&La, 888); printf(\ getch(); }
正在阅读:
实验一-顺序表的基本操作12-09
中国历史文化名镇靖港(导游词)03-24
医生如何书写系统评价和meta分析02-22
江苏省2020届高三数学一轮复习典型题专题训练:不等式选讲12-21
小学班主任基本功比赛情景答辩题目03-07
关于钓鱼岛的黑板报图片多张02-12
数字化设计与制造的国内外发展现状及趋势03-05
Hypermesh知识总结11-10
怎样锻炼语言组织能力02-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 基本操作
- 顺序
- 实验
- 2016-2017学年牛津译林版英语7B Unit4提优测试卷含答案 - 图文
- 2011 年招生工作目标与业绩考核办法
- 宝鸡市妇幼健康与发展知识竞赛公众答题卡 doc
- 热力学总结
- 新闻写作练习题有答案
- 愤怒与忍辱 第二讲 佛教常见修忍方法简介
- 财务分析练习题及答案1
- 《电工与电子技术基础》试题库及答案 2
- 政治理论学习心得
- C#试验指导书-2012版
- 教师如何面对应试教育向素质教育的转变
- 建设项目3000万元以下估算投资额分档收费标准
- 《外科护理学》练习题(本科)
- 社区“清廉社区”创建工作实施方案
- 人事管理系统软件工程课程设计可行性研究报告(doc 69页)
- 北大课程表
- 新视野大学英语视听说4听力原文翻译
- 讨论多元函数连续、偏导数存在、可微之间的关系
- 银行理财沙龙策划方案
- 如何区分机型 - 图文