- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2010年高考理综试题和答案(全国卷2)
2.3 线性表的链式表示和实现;
链表是通过每个结点的指针域将线性表的n个结点按其逻辑次序链接在一起的。
每一个结点只包含一个指针域的链表,称为单链表或线性链表。
为操作方便,总是在链表的第一个结点之前附设一个头结点(头指针)head指向第一个结点。头结点的数据域可以不存储任何信息(或链表长度等信息)。; 2.3.1 线性链表;C语言中用结构指针来描述(线性表的单链表存储结构)
typedef struct LNode
{ ElemType data; /*数据域,保存结点的值 */
struct Lnode *next; /*指针域*/
}LNode,*LinkList; /*结点的类型 */;常见的指针操作;⑤ q-next=p-next ;;2.3.2 单链表的基本操作;2.3.2 单链表的基本操作;2.3.2 单链表的基本操作;2.3.2 单链表的基本操作;算法描述(算法2.10)
status LinkListDelete_ L(LinkList L, int i, ElemType e)
//在带头结点的单链表L中删除第i个元素,并由e返回其值
{
p=L; j=0;
while ( p-next ji-1)
{ p=p–next; ++j; }
if (!(p-next)||ji-1) return error;
q=p–next; p–next =q–next; free(q);
return ok;
};2.3.2 单链表的基本操作;单链表的合并
设有两个有序的单链表,它们的头指针分别是La 、 Lb,将它们合并为以Lc为头指针的有序链表。合并前的示意图如图2-4所示。;合并了值为-7,-2的结点后示意图如图2-5所示。;算法描述(算法2.12)
Void MergeList_L(LinkList La, LinkList Lb, LinkList Lc)
//已知单链线性表La和Lb的元素按非递减排列
//归并La和Lb得到新的单链线性表Lc也按值非递减排列
{
pa=La-next ; pb=Lb-next ; Lc=pc=La;
while (pa pb)
{ if (pa-data=pb-data)
{ pc-next=pa ; pc=pa ; pa=pa-next ; }
else
{ pc-next=pb ; pc=pb ; pb=pb-next ; }
}
pc-next=pa?pa:pb;
free(Lb); //释放Lb头结点
};2.3.3 循环链表; 有时,若在循环链表中设立尾指针而不设头指针,可使某些操作简化。;2.3.4 双向链表;1 双向链表的结点及其类型定义
双向链表的结点的类型定义如下。其结点形式如图2-7所示,带头结点的双向链表的形式如图2-8所示。
typedef struct Dulnode
{ ElemType data ;
struct Dulnode *prior , *next ;
}DulNode,*DulinkList ;;2.3.4 双向链表; 双向链表结构具有对称性,设p指向双向链表中的某一结点,则其对称性可用下式描述:
p-prior-next=p=p-next-prior ;
结点p的存储位置存放在其直接前趋结点p-prior的直接后继指针域中,同时也存放在其直接后继结点p-next的直接前趋指针域中。
2 双向链表的基本操作
(1) 双向链表的插入 将值为e的结点插入双向链表中。插入前后链表的变化如图2-9所示。;算法2.18
status ListInsert_Dul(DuLinkList L , int i , ElemType e)
{
if(!(p=GetElemP_Dul(L , i)))
return error;
if (!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return error;
s-data=e;
s-prior=p-prior;
p-prior-next=s;
s-next=p;
p-pror=s;
return ok;
}; (2) 双
文档评论(0)