下载此文档

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


文档分类:IT计算机 | 页数:约164页 举报非法文档有奖
1/164
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/164 下载此文档
文档列表 文档介绍
-
. 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;

数据结构实践教程课程设计报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数164
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1006108867
  • 文件大小346 KB
  • 时间2022-04-21