- 1、本文档共94页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 线性表 ;线性表是一种线性数据结构
一、线性表的定义
1. 特点:
(1)相同类型的数据组成
(2)有穷序列
(3)只有一个初始点无前驱,称为表头(元素)
(4)只有一个终端点无后继,称为表尾(元素)
(5)相邻数据之间满足1:1的关系
2.举例
(1)一年12个月(1,2,3,……,12)
(2)26个字母(a,b,c,……,z);3. 线性表的描述方式
例如:一年12个月
(1)(1,2,3,……12)
(2)①→②→③→……→
(3)month=(M,R)
M={5,4,6,……9}
R={r}
r={1,2,2,3,……11,12};也可以用二元组表示线性表的数据结构:
linear_list =(A,R)
A= {ai | 1? i ? n, n ? o, ai ? ElemType}
R={r}
r={ ai , ai+1 | 1? i ? n-1} ;4. 说明:
(1)线性表的长度:所含元素的个数
(2)允许线性表为空
在一个线性表中若存在着按值的升序或降序排列的字段,则称该字段为有序字段,该线性表为有序表,否则若不存在任何有序字段,则为无序表。;二、抽象数据类型(ADT);抽象数据类型线性表的定义如下:
ADT LinearList is:
Data:
一个具有ListType类型的线性表L
Operation:
void InitList(ListType &L); //初始化为空
void CIearList(ListType &L); //清除L中的所有元素
int ListSize (ListType L); //返回L的长度
bool EmptyList (ListType &L); //判断L是否为空
ElemType GetList(ListType L,int pos); //返回L中第pos个元素的值;void TraverseList (ListType L);
//遍历输出L中的所有元素
bool FindList(ListType L, ElemType item);
//从L中查找并返回元素
bool UpdateList (ListType L,const ElemType item);
//修改L中元素
bool InsertList (ListType L, ElemType item,int pos);
//向L中插入元素
bool DeleteList (ListType L, ElemType item ,int pos);
//从L删除元素
void SortList (ListType L);
//对L中的所有元素重新按给定条件排序
end LinearList;2.1.3 操作举例;例2 假定课程(course)记录的结构为:
struct course {
char Cname[20]; //课程名称
int Chour; //开课学时
int Cterm; //开课学期
};course x={“ “,72};
course y={“程序设计基础”};
course z={“英语”,80,1};
course w={“数据结构”,72,4};
GetList(L2, 3);
//返回{“英语”,72,1}
FindList (L2, x);
//找学时为72的记录{“离散数学”,72,2}
FindList (L2, y); //找课程为“程序设计基础”的记录
UpdateList (L2,z); //修改“英语”记录为80学时
InsertList (L2,w,6); //尾部插入一条记录w
文档评论(0)