}单链表是一种动态结构,建立线性表的链式存储结构的过程是一个动态生成 链表的过程
2010年高考理综试题及答案(全国卷2)
2.3.2 单链表的基本操作逆向建立单链表(算法2.11)Viod CreateList_L(LinkList &L , int n) //逆位序输入n个元素的值,建立带表头结点的单链线性表L。 { L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for( i=n; i>0; --i) { p=(LinkList)malloc(sizeof(LNode)); scanf(&p->data); p->next=L->nxet; L->next=p; } } 时间复杂度为O(n)
2010年高考理综试题及答案(全国卷2)
单链表的合并设有两个有序的单链表,它们的头指针分别是La 、 Lb,将它们合并为以Lc为头指针的有序链表。合并前的 示意图如图2-4所示。pa Lc pc La -7 Lb -2 4 9 …… 15
3
12
……
23
pb
图2-4 两个有序的单链表La ,Lb的初始状态pa ,pb分别是待考察的两个链表的当前结点,pc指向Lc表中最后一个结点。
2010年高考理综试题及答案(全国卷2)
合并了值为-7,-2的结点后示意图如图2-5所示。pa La Lc Lb -2 pc 4 pb 9 …… -7 3 12 ……
23
15
图2-5
合并了值为-7 ,-2的结点后的状态
算法说明算法中pa ,pb分别是待考察的两个链表的当前结 点,pc指向Lc表中最后一个结点。
2010年高考理综试题及答案(全国卷2)
算法描述(算法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头结点
}
2010年高考理综试题及答案(全国卷2)
2.3.3 循环链表循环链表(Circular Linked List):是一种头尾相接的链表。其特点是最后一个结点的指针域指向链表的头结 点,整个链表的指针域链接成一个环。 从循环链表的任意一个结点出发都可以找到链表中 的其它结点,使得表处理更加方便灵活。 图2-6是带头结点的单循环链表的示意图。HH …… an
a1
a2
空表
非空表
图2-6 单循环链表示意图
2010年高考理综试题及答案(全国卷2)
循环链表的操作对于单循环链表,除链表的合并外,其它的操作和 单线性链表基本上一致,仅仅需要在单线性链表操作算 法基础上作以下简单修改: ⑴ 判断是否是空链表:head->next==head ; ⑵ 判断是否是表尾结点:p->next==head ; 有时,若在循环链表中设立尾指针而不设头指针, 可使某些操作简化。A
B
B,A
2010年高考理综试题及答案(全国卷2)
2.3.4 双向链表双向链表(Double Linked List) :指的是构成链表的每个结点中设立两个指针域:一个指向其直接前趋的指 针域prior,一个指向其直接后继的指针域next。这样形 成的链表中有两个方向不同的链,故称为双向链表。 和单链表类似,双向链表一般增加头指针也能使双 链表上的某些运算变得方便。将头结点和尾结点链接起来也能构成循环链表,并 称之为双向循环链表。 双向链表是为了克服单链表的单向性的缺陷而引入
的。
2010年高考理综试题及答案(全国卷2)
1 双向链表的结点及其类型定义双向链表的结点的类型定义如下。其结点形式如 图2-7所示,带头结点的双向链表的形式如图2-8所示。
typedef struct Dulnode { ElemType data ; struct Dulnode *prior , *next ; }DulNode,*DulinkList ;prior element nexthead
图2-7 双向链表结点形式head a1 a2 …… an
空双向链表
非空双向链表 图2-8
带头结点的双向链表形式
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试2010年高考理综试题及答案(全国卷2)(2)在线全文阅读。
相关推荐: