数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关
目录
1.线性表的定义和特点
在日常生活中线性表的例子比比皆是。对于非空的线性表或线性结构,其特点是:
(1)存在唯一的一个被称作“第一个”的数据元素;
(2)存在唯一的一个被称作“最后一个”的数据元素;
(3)除第一个元素之外,结构中的每个数据元素均只有一个前驱;
(4)除最后一个元素之外,结构中的每个数据元素均只有一个后继;
2.线性表的类型定义
线性表是一种相当灵活的数据结构,其长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,而且可以进行插入和删除等操作。为不失一般性,本书采用1.2节抽象数据类型格式对各种数据结构进行描述。下面给出线性表的抽象数据类型定义:
ADT LIST{
数据对象:D={a}
数据关系:R={<a,a>}
基本操作:
InitList(&L)
操作结果:构造一个空的线性表L。
DestroyList(&L)
初始条件:线性表L已存在。
操作结果:销毁线性表L。
ClearList(&L)
初始条件:线性表L已存在。
操作结果:将L重置为空表。
ListLenth(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem(L,I,&e)
初始条件:线性表已存在。
操作结果:用e返回L中的I个数据元素的值。
LocateElem(L,i,&e)
初始条件:线性表L已存在。
操作结果:返回L中第1个值与e相同的元素在L中的位置。若这样的元素不存在,则返回值为0.
PriorElem(L,cur_e,&npre_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回其后继,否则操作失败。
NextElem(L,cur_e,&next_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回其后继,否则操作失败。
ListInsert(&L,i,e)
初始条件:线性表L已存在。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
ListDelete(&L,i)
初始条件:线性表L已存在且非空。
操作结果:删除L的第i个数据元素,L的长度减1.
TraverseList(L)
初始条件:线性表L已存在。
操作结果:对线性表L进行遍历,在遍历过程中对L的每个节点访问一次。
}ADT LIST
3.顺序表中基本操作的实现
1.初始化:
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem) exit(OVERFLOW)
L. length=0;
return OK;
}
2.取值:
Status GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i》L。length)return ERROR;
e=L.elem[i-1];
return OK;
}
4.小总结
本次内容主要了讲解了数据结构中的一些基础知识点,主要内容顺序表的有关知识本篇内容都为数据结构的基本思想,若想更深的理解以及体会,还请大家在日常学习中多多努力,希望大家学有所成,