问答题 试用下列三种表示法画出图G(编者略)的存储结构,并评述这三种表示法的优、缺点:(1)邻接矩阵表示法;(2)邻接表表示法;(3)其他表示法。【华中理工大学2000三(12分)】
【正确答案】正确答案:图G的具体存储结构略。对于邻接矩阵表示法,有n个顶点的图占用n 2 个元素的存储单元,与边的个数无关,当边数较少时,存储效率较低。这种结构下,对查找结点的度、第一邻接点和下一邻接点、两结点间是否有边的操作有利,对插入和删除顶点的操作不利。邻接表表示法是顶点的向量结构与顶点的邻接点的链式存储结构相结合的结构,顶点的向量结构含有n(n≥0)个顶点和指向各顶点第一邻接点的指针,其顶点的邻接点的链式存储结构是根据顶点的邻接点的实际设计的。这种结构适合查找顶点及邻接点的信息,查顶点的度,增加或删除顶点和边(弧)也很方便,但因指针多占用了存储空间。 另外,某两顶点间是否有边(弧)也不如邻接矩阵那么直观。对有向图的邻接表,查顶点出度容易,而查顶点入度却很困难,要遍历整个邻接表。要想查入度也像查出度那样容易,就要建立逆邻接表。无向图邻接表中边结点是边数的二倍,这也增加了存储量。十字链表是有向图的另一种存储结构,将邻接表和逆邻接表结合到一起,弧结点也增加了信息(至少弧尾、弧头顶点在向量中的下标及指向弧头相同和弧尾相同的下一条弧的指针四个信息)。 查询顶点的出度、入度、邻接点等信息非常方便。邻接多重表是无向图的另一种存储结构,边结点至少包括5个域:连接边的两个顶点在顶点向量中的下标,指向与该边相连接的两顶点的下一条边的指针,以及该边的标记信息(如该边是否被访问)。边结点的个数与边的个数相同,这是邻接多重表比邻接表优越之处。
【答案解析】