2.1试述头结点、首元结点、头指针这三个概念的区别。

2.1试述头结点、首元结点、头指针这三个概念的区别。

2.2线性表有两种存储结构:顺序表和链表。试问:如果线性表的元素个数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种数据结构?为什么?

2.3设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后续的C语言语句。

头结点、首元结点、头指针区别为:性质不同、目的不同、存在情况不同。

一、性质不同

1、头结点:头结点是在链表的首元结点之前附设的一个结点。

2、首元结点:首元结点是指链表中存储线性表中第一个数据元素a1的结点。

3、头指针:头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。

二、目的不同

1、头结点:头结点为了方便操作链表而附设的。

2、首元结点:首元结点作为链表的开始结点。

3、头指针:头指针为了指向链表的基地址。

三、存在情况不同

1、头结点:头结点对于单链表来说,头结点可有可无,但为了操作方便,一般情况下单链表都具有头结点。

2、首元结点:首元结点如果单链表有头结点,则首元结点为头结点的下一个结点,如果单链表没有头结点,则首元结点就是单链表的第一个结点。

3、头指针:头指针如果单链表有头结点,则头指针指向头结点,如果单链表没有头结点,则头指针指向第一个首元结点。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-11

2.1

    头结点:是为了方便操作链表而附设的,头结点数据域通常用来保存跟链表有关的信息,比如链表的长度; 

   首元结点:就是链表里“正式”的第一个结点,即链表的开始结点。形如a1,a2,a3,...an;

   头指针:头指针是指向链表的基地址。如果链表存在头结点则头指针就是指向头结点的地址,反之指向首元结点的地址。


2.2

    如果要求以最快的速度存取线性表中的数据,则应当采取顺序表,因为顺序表适用于频繁访问,且增删改较小,但增加可移除结点速度慢。而链表则适用于频繁增删改,因为要移动结点的次数少,但访问速度慢,因为要挨个去走访。


2.3 

q=p->next;        // p的后继赋给q 
p->next=q->next;  // p的后继变成q的后继
e=q->data;
free(q);          // 释放q结点

本回答被网友采纳
相似回答