1 / 167
文档名称:

数据结构实践教程课程设计报告.doc

格式:doc   大小:338KB   页数:167页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实践教程课程设计报告.doc

上传人:2286107238 2022/1/27 文件大小:338 KB

下载得到文件列表

数据结构实践教程课程设计报告.doc

相关文档

文档介绍

文档介绍:-
. z
数据构造实践教程
-
. 表中数据元素的性质,所以该系统的数据采用线性表来存储。
顺序表是线性表的顺序存储构造,是指用一组连续的存单元依次存放线性表的数据元素。在顺序存储构造下,逻辑关系相邻的两个元素在物理位置上也相邻,这是顺序表的特点。本工程可以采用顺序表的线性表顺序存储构造。
假设一个数据元素仅占一个存储单元,则其存储方式参见图1-1。
从图1-1中可见,第i个数据元素的地址为
-
. z
Loc(ai)=loc(a1)+(i-1)
假设线性表中每个元素占用k个存储单元,则在顺序表中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是
Loc(ai)=loc(a1)+(i-1)*k
这里Loc(ai)是第i个元素的存储位置,loc(a1)是第1个元素的存储位置,也称为线性表的基址。显然,顺序表便于进展随机,故线性表的顺序存储构造是一种随机存储构造。
顺序表适宜于做查找这样的静态操作;顺序存储的优点是存储密度大,存储空间利用率高。缺点是插入或删除元素时不方便。
由于C语言的数组类型也有随机存储的特点,一维数组的机表示就是顺序构造。因此,可用C语言的一维数组实现线性表的顺序存储。数组实现线性表的顺序存储的优点是可以随机存取表中任一元素O(1),存储空间使用紧凑;缺点是在插入,删除*一元素时,需要移动大量元素O(n),预先分配空间需按最大空间分配,利用不充分,表容量难以扩大。
用构造体类型定义每个学生数据,故该数组中的每个数据的构造可描述为:
typedef struct STU
{ char stuno[10]; //**
char name[10]; //
float score; //成绩
} ElemType;
程序清单
#include<>
#include<>
#include<>
#include<>
#define Ma*ListSize 20
#define EQUAL 1
typedef struct STU{
char stuno [10];
char name [10];
float score;
}ElemType;
class List
{private:
//线性表的数组表示
-
. z
ElemType elem[Ma*ListSize];
int length;
int Ma*Size;
public:
//输入学生数据
void init(List **L,int ms);
//删除所有学生数据
void DestroyList(List &L){free(&L);}
//将顺序表置为空表
void ClearList(){length=0;}
//判断顺序表是否为空表
bool ListEmpty()
{return length==0;}
//判断顺序表是否为满
bool ListFull()
{return length==Ma*Size;}
//删除*个学生数据
bool ListDelete(int,ElemType &e);
//遍历顺序表
void ListTraverse();
//返回顺序表的长度
int ListLength();
//学生数据查询
void GetElem(int,ElemType *);
//修改学生数据
bool UpdateList(ElemType& e,ElemType);
//添加学生数据
bool ListInsert(int,ElemType &);
//对学生数据按升序或降序输出
void printlist(int);
};
void List::init(List **L,int ms)
{*L=(List *)malloc(sizeof(List));
(*L)->length=0;
(*L)->Ma*Size=ms;