数据结构问题 在邻接表中什么是表节点?什么是表头节点?什么是头节点?

如题所述

邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。

数据结构中,在单链表的第一个结点之前附设一个结点,它没有直接前驱,称之为头结点。

扩展资料:

头结点是链表里面第一个结点,他的数据域可以不存放任何信息(有时候也会存放链表的长度等等信息),他的指针区域存放的是链表中第一个数据元素的结点(就是传说中的首元结点)存放的地址。

1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,头结点的指针域的数值为NULL.

2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性!

3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会[1] 。

4、对单链表的多数操作应明确对哪个结点以及该结点的前驱。不带头结点的链表对首元结点、中间结点分别处理等;而带头结点的链表因为有头结点,首元结点、中间结点的操作相同,从而减少分支,使算法变得简单,流程清晰。

对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在TurboC算法的函数形参表中头指针一般使用指针的指针(在C++中使用引用&);

而带头结点的单链表不需改变头指针的值,函数参数表中头结点使用指针变量即可,对初学者更易接受。

参考资料来源:百度百科-头结点

参考资料来源:百度百科-邻接表

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

邻接表是图的一种最主要存储结构,用来描述图上的每一个点。

参见http://baike.baidu.com/view/549594.htm

再给你看一下数据结构的课件解释

第二个图是个标准的邻接表实例  右上角是图,共有5个点,v1到v5

按照每个点来建立单链表组成邻接表。

首先 以v1作为头结点,和v1相邻的有v2和v4,则v1指向地址3即v3,v2的指向地址1即v2,v2指向空说明单链表结束。以此类推构成整个邻接表。

追问

哪表头节点是什么?

 

这个是表节点?

这个是头节点对吗?

追答

第一个是头结点 第二个是表结点

本回答被提问者和网友采纳
第2个回答  2013-12-16

邻接表是图的一张链式存储结构 。 邻接表中,对图中每个顶点建立一个单链表 ,每个结点由3个域组成每个链表上附设一个表头结点。

一个表结点由三部分组成               头结点两部分组成

adjvex  nextarc  info          data  firstarc

相似回答