线性表(1)数据结构.pptVIP

  • 1
  • 0
  • 约3.83千字
  • 约 18页
  • 2024-01-18 发布于广西
  • 举报

第二章线性表;2.1线性表的类型定义及根本操作;线性表的根本操作

初始化线性表L,InitList(L)

销毁线性表L,DestroyList(L),

清空线性表L,ClearList(L),

判断线性表L是否为空ListEmpty(L)

求线性表L的长度ListLength(L)

取线性表L的第i个元素,GetElem(L,i,e)

检索线性表L中元素e:LocateElem(L,e,compare())

返回线性表L中元素e的直接前驱元素:PriorElem(L,cur_e,prio_e)

返回线性表L中元素e的直接后继元素:NextElem(L,cur_e,next_e)

在线性表L的第i个元素之前插入元素ListInsert(L,i,e)

删除线性表L中的第i个元素删除元素ListDelete(L,i,e)

遍历线性表L:依次对L的每个元素调用visit(),ListTraverse(L,visit());抽象数据类型

ADTList{

数据对象:D={ai|ai?ElemSet,I=1,2,…n,n?0}

数据关系:R={ai-1,ai|ai-1,ai?D,I=2,3,…,n}

根本操作:InitList(L),

DestroyList(L),ClearList(L),

ListEmpty(L),ListLength(L),

GetElem(L,I,e),

LocateElem(L,e,compare())

PriorElem(L,cur_e,prio_e)

NextElem(L,cur_e,next_e)

ListInsert(L,I,e),ListDelete(L,I,e)

ListTraverse(L,visit())

};2.2线性表的顺序表示和实现;顺序表的特点;表示方法:

在高级语言中,用一维数组表示:

表示方法:

constLIST_INIT_SIZE=100;//表初始分配空间

constLISTINCREMENT=10;//空间分配增量

typedefstruct{ElemType*elem;//存储空间

intlength;//当前长度

intlistsize;//当前存储容量

}SqList;

注意:

1.数组指针elem指示线性表的基地址,length:线性表的当前长度。

2.C语言数组的下标从0开始,即数组中的第i个元素为L.elem[i-1];根本操作的实现:

〔1〕初始化线性表:为顺序表分配一个预定义大小的数组空间,并将线性表的初始长度设为0

StatusInitList_Sq(SqListL)

{//构造空表L

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*

sizeof(ElemType));

if(!L.elem)exit(OVERFLOW);

L.length=0;

L.listsize=LIST_INIT_SIZE;

returnOK;

}//InitList_Sq;〔2〕线性表的插入——插入一个元素

在线性表的第i个位置上插入一个新的元素

分析:即在第i-1个元素和第i个元素之间插入

插入的步骤:将i个元素后移,即将第i个元素之后的所有元素后移;将新的元素放置在第i个位置;

考虑的问题:存储空间

;StatusListInsert_Sq(SqListL,inti,ElemTypee)

{//在顺序表L中第i个元素位置插入新元素e,

if(i1||iL.length+1)returnERROR;//非法的位置

if(L.length=L.listsize)error(‘OVERFLOW’);

for(j=L.length-1;j=i-1;--j)L.elem[j+1]=L.elem[j];

文档评论(0)

1亿VIP精品文档

相关文档