第一章线性表2
1描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)
解:头指针是指向链表中第一个结点的指针
首元结点是指链表中存储第一个数据元素的结点
头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作
它可以对空表、非空表以及首元结点的操作进行统一处理
解:(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关
(2)顺序表中逻辑上相邻的元素的物理位置必定紧邻
单链表中逻辑上相邻的元素的物理位置不一定紧邻
(3)在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示
(4)在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理
3在什么情况下用顺序表比链表好
解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取
4对以下单链表分别执行下列各程序段,并画出结果示意图
5画出执行下列各行语句后各指针及链表的示意图
L=(LinkList)malloc(sizeof(LNode));P=L;for(i=1;inext=(LinkList)malloc(sizeof(LNode));P=P->next;P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--)Ins_LinkList(L,i+1,i*2);for(i=1;inext=S;(2)P->next=P->next->next;(3)P->next=S->next;(4)S->next=P->next;(5)S->next=L;(6)S->next=NULL;(7)Q=P;(8)while(P->next
=Q)P=P->next;(9)while(P->nex