- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
线性表;2.1线性表的概念及运算;2.1线性表的概念及运算;2.1线性表的概念及运算;2.1线性表的定义及抽象数据类型;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.2线性表的顺序表示与实现;2.3线性表的链式表示与实现;2.3线性表的链式表示与实现;2.3线性表的链式???示与实现;2.3线性表的链式表示与实现;2.3线性表的链式表示与实现;2.3.2单链表上的基本运算
(1)初始化单链表。
voidInitList(LinkList*head)
{
/*为头结点分配一个存储空间*/
if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)
exit(-1);
(*head)-next=NULL; /*将单链表的头结点指针域置为空*/
};2.3线性表的链式表示与实现;2.3线性表的链式表示与实现;(4)按内容查找,查找元素值为e的结点。
ListNode*LocateElem(LinkListhead,DataTypee)
{
ListNode*p;
p=head-next; /*指针p指向第一个结点*/
while(p)
{
if(p-data!=e) /*没有找到与e相等的元素*/
p=p-next; /*继续找下一个元素*/
else /*找到与e相等的元素*/
break; /*退出循环*/
}
returnp;
};(5)定位操作。定位操作与按内容查找类似,只是定位操作返回的是该结点的序号。
intLocatePos(LinkListhead,DataTypee)
{
ListNode*p;
inti;
if(ListEmpty(head)) /*在查找第i个元素之前,判断链表是否为空*/
return0;
p=head-next; /*指针p指向第一个结点*/
i=1;
while(p)
{
if(p-data==e) /*找到与e相等的元素*/
returni; /*返回该序号*/
else
{
p=p-next;
i++;
}
}
if(!p) /*如果没有找到与e相等的元素*/
return0; /*返回0*/
};(6)在第i个位置插入元素e。先来看如何在单链表中插入一个结点。假设存储元素e的结点为p,要将p指向的结点插入到pre和pre-next之间,根本不需要移动其他结点,只需要让p指向结点的指针和pre指向结点的指针做一点改变即可。即先把*pre的直接后继结点变成*p的直接后继结点,然后把*p变成*pre的直接后继结点,如图所示,代码如下:
p-next=pre-next;
pre-next=p;;注意:插入结点的两行代码不能颠倒顺序。如果先进行pre-next=p,后进行p-next=pre-next操作,则第一条代码就会覆盖掉pre-next的地址,pre-next的地址就变成了p的地址,执行p-next=pre-next就等于执行p-next=p,这样pre-next就与上级断开了链接,造成尴尬的局面。如图所示。;如果要在单链表的第i个位置插入一个新元素e,首先需要在链表中找到其直接前驱结点,即第i-1个结点,并由指
文档评论(0)