- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表(Linear lists);第2章 线性表(Linear lists) ;一、线性表的定义 ;二、线性表的抽象数据类型(ADT) ;三、线性表的基本操作 ;三、线性表的基本操作 ;三、线性表的基本操作 ;四、线性表的基本操作举例 ;2.2 线性表的顺序表示和实现;一、线性表的顺序表示;一、线性表的顺序表示;一、线性表的顺序表示; 假设动态分配的存储区域如右图所示。
如果我们用指针变量 elem 来存放首地址,由于该区域是用来存放元素的,而元素约定为ElemType类型的,所以,elem应定义为:
ElemType *elem;
这样一来,位序为1的元素存放在elem[0] 中,位序为 i 的元素存放在elem[i-1]、*(elem+i-1)中.;struct SqList{
ElemType *elem; //基地址
int listsize; //当前容量(以元素为单位)
int length; //当前长度
};
#define LIST_INIT_SIZE 100 //基本容量
#define LISTINCREMENT 10 //增量 ;#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct SqList{
ElemType *elem;
int listsize;
int length;
}SqList;
void main( ){
SqList L1;
//此时进行插入操作是错误的;
//需要对L1进行初始化操作,以便为线性表的元素分配存储区域.
};二、线性表基本操作的实现算法;初始化操作的实现算法;二、线性表基本操作的实现算法;取元素操作的实现算法;二、线性表基本操作的实现算法;插入操作的实现算法;插入操作的实现算法;if(L.length=L.listsize){
newbase=(ElemType*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(ElemType));
If(!newbase) exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT; } //详见P24算法2.4;二、线性表基本操作的实现算法;删除操作的实现算法;二、线性表基本操作的实现算法;二、线性表基本操作的实现算法;例、基于顺序表的归并操作;归并操作基于顺序表的实现算法;归并操作基于顺序表的实现算法;归并操作基于顺序表的实现算法;2.3 线性表的链式表示和实现;一、线性表的链式表示;一、线性表的链式表示;一、线性表的链式表示; 有人说,只要得到了单链表的头指针L,也就获得了整个单链表。为什么呢?因为从头指针出发,可顺链到达单链表中每一结点。
由于L-next指向???结点a1,所以L-next-data等于a1,而且 L-next-next指向第二个结点a2。
一般地,若p指向第i-1个结点ai-1,则p-data= ai-1,p-next指向第i个结点ai,p-next-data等于ai,而且p-next-next指向ai+1结点,…
总之,从头指针出发,可以访问单链表中每一结点。因此,只要获得了单链表的头指针,就获得了整个单链表。 ;二、线性表基本操作的实现算法;二、线性表基本操作的实现算法;取元素操作的实现算法;取元素操作的实现算法;二、线性表基本操作的实现算法;插入操作的实现算法;二、线性表基本操作的实现算法;删除操作的实现算法;二、线性表基本操作的实现算法;归并操作基于单链表的实现算法;归并操作基于单链表的实现算法; 至此,我们讨论了初始化、获取元素、插入、删除等基本操作的实现算法。现在考虑一个问题,即怎样配合使用这些基本操作来操纵单链表呢?;下面我们结合线性表 L=(A,B,C,D) 来说明静态链表。静态链表是一个数组,每个数组元素由两个域组成:;三、静态链表;四、循环链表和双向链表;四、循环链表和双向链表;;四、循环链表和双向链表;双向链表;基于双向链表的基本操作的实现算法;插入操作的实现算法;基于双向链表的基本操作的实现算法;删除操作的实现算法;五、双向循环链表;几种链表的对比;几种链表的对比;小 结; 1) 存储结构的选取
任一一元多项式可表示为Pn(x)=P0+P1x+P2x2+...+
文档评论(0)