第二章 作业答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章作业

1. 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

答:首结点就是存放数据元素的第一个元素结点,头结点是为了插入和删除的方便说增设的一个结点,头指针是指向链表中第一个结点的存储位置,在没有头结点的链表中,头指针指向链表中的首结点,在有头结点的链表中,头指针指向链表中的头结点。

2. 简述线性表的两种存储结构顺序表和链表的优缺点。

3. 已知 L 是无表头结点的单链表,且 P 是指向表中某个结点的指针,试写出在 P 所指结点之前插入指针 S 所指结点的语句序列。

P->next->next= P->next;

S->next = P;

4. 已知 P 是指向双向链表中某个结点的指针,试写出删除 P 所指结点的前驱结点的语句序列。

p是要删除的结点,q是p的前一个结点

q->next = p->next;简述以下算法的功能。

(1) Status A(LinkedList L) { // L 是无表头结点的单链表

if (L && L->next){

Q =L; L =L->next; P =L ;

while ( P->next) P =P->next ;

P->next =Q; Q->next = NULL;

}

return OK;

} // A

本程序实现的功能就是:如果L的长度不小于2,则将首元结点删去并插入到末尾。(2) void BB(LNode *s, LNode *q ) {

p =s ;

while (p->next!=q) p =p->next ;

p->next =s;

} //BB

void AA(LNode *pa, LNode *pb) {

// pa 和 pb 分别指向单循环链表中的两个结点

BB(pa, pb);

BB(pb, pa);

} //AA

如果L的长度不小于2,将L的首元结点变成尾元结点。将单循环链表拆成两个单循环链表。

相关文档
最新文档