下面属于常用的表示树的链表结构的有()。

题目
下面属于常用的表示树的链表结构的有()。

A.双亲表示法
B.孩子兄弟表示法
C.孩子表示法
D.姐姐表示法
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面关于查找运算及查找表的叙述,错误的是( )。

A.哈希表可以动态创建

B.二叉排序树属于动态查找表

C.二分查找要求查找表采用顺序存储结构或循环链表结构

D.顺序查找方法既适用于顺序存储结构,也适用于链表结构


正确答案:C
解析:哈希表和二叉排序树都可以在查找过程中动态创建,属于动态查找表。顺序查找方法按照设定的次序依次与查找表中元素的关键字进行比较,在顺序存储结构和链表结构上都可以实现该查找过程。二分查找需要对中间元素进行快速定位,在链表结构上无法实现。

第2题:

空间单元表示法数据结构通常用六叉树和八叉树。()


参考答案:×

第3题:

数据的四种基本逻辑结构是指______。

A. 组、链表、树、图形结构

B.线性表、链表,栈队列、数组广义表

C.线性结构、链表,树,图形结构

D.集合,线性结构、树、图形结构


正确答案:D

第4题:

请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。

[说明]

一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。

函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。

对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。

Bool、Status类型定义如下:

树的二叉链表节点定义如下:

[C函数程序]


正确答案:这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时每个节点都进出队列一次节点出队列时进行访问。其过程是首先令树根节点入队若是森林(树根之间互为兄弟)接着则令其余树的根节点入队然后在队列非空的情况下队头节点出队访问该节点同时令其孩子节点入队。以此类推直到队列为空。 在试题所给出的[C函数程序]中代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能因此(1)空缺处所填写的内容是“EnQueue(&tempQ root)”。 采用二叉树存储树结构时其右分支表示兄弟关系因此队头节点出队时应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能因此(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是当队列非空时应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ&ptr)”。 若一个节点不存在孩子则其firstchild指针域为空也无须令其孩子节点入队列。因此(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之若一个节点有孩子则应首先令其第一个孩子节点入队列然后通过右分支链使其他孩子节点入队列。因此(6)空缺处所填写的内容是“EnQueue(&tempQptr->firstchild)”(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。
这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时,每个节点都进出队列一次,节点出队列时进行访问。其过程是,首先令树根节点入队,若是森林(树根之间互为兄弟),接着则令其余树的根节点入队,然后在队列非空的情况下,队头节点出队,访问该节点同时令其孩子节点入队。以此类推,直到队列为空。 在试题所给出的[C函数程序]中,代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能,因此(1)空缺处所填写的内容是“EnQueue(&tempQ, root)”。 采用二叉树存储树结构时,其右分支表示兄弟关系,因此队头节点出队时,应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能,因此,(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此,就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空,即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是,当队列非空时,应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ,&ptr)”。 若一个节点不存在孩子,则其firstchild指针域为空,也无须令其孩子节点入队列。因此,(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之,若一个节点有孩子,则应首先令其第一个孩子节点入队列,然后通过右分支链使其他孩子节点入队列。因此,(6)空缺处所填写的内容是“EnQueue(&tempQ,ptr->firstchild)”,(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。

第5题:

实现任意二叉树的后序遍历的非递归算法用栈结构,最佳方案是二叉树采用______存储结构。

A.二叉链表

B.顺序存储结构

C.三又链表

D.广义表存储结构


正确答案:C
解析:二叉树的存储有:顺序存储、二叉链表、三叉链表。
  遍历算法有:先序、中序和后序。所谓先后是针对访问根节点与访问子节点的相对顺序而言的。另外,还有层序遍历。
  对于后序遍历的非递归算法,用栈实现,用三叉链表是比较好的。

第6题:

若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。()


正确答案:对

第7题:

下列各数据结构中不属于线性结构的是( )。

A.线形表

B.栈与队列

C.线性链表

D.二叉树


正确答案:D
解析:一个线性结构需要满足以下两个条件:一是有且只有一个根节点,二是每个节点最多有一前件,也最多有一个后件。选项中的线形表、栈与队列、线性链表都满足这两个条件,所以它们都是线性结构。而二叉树虽然只有一个根节点,但它的每个节点可以有两个子树,不满足线性结构的每个节点最多有一个前件,也最多有一个后件这一条件,所以它不是线性结构。

第8题:

下列叙述中正确的是()。

A.有多个指针域的链表有可能是线性结构。

B.有多个指针域的链表一定是非线性结构。

C.有两个指针域的链表一定是二叉树的存储结构。

D.只有一个根结点的数据结构一定是线性结构。


正确答案:A

第9题:

下列数据结构中属于非线性结构的是( )。

A.二叉树

B.线形表

C.栈与队列

D.线性链表


正确答案:A
解析:一个线性结构需要满足以下两个条件:一是有且只有一个根节点;二是每个节点最多有一个前件,也最多有一个后件。选项中的线形表、栈与队列、线性链表都满足这两个 条件,所以它们都是线性结构,而二叉树虽然只有一个根节点,但它的每个节点可以有两个子树,不满足线性结构的每个节点最多有一个前件,也最多有一个后件这一条件。所以它是非线性结构。

第10题:

下列叙述中错误的是

A.二又链表是二又树的存储结构

B.循环链表是循环队列的一种存储结构

C.循环队列属于线性表

D.带链的队列是队列的一种存储结构


正确答案:B
解析:二叉链表是二叉树的一种存储结构;循环队列是队列的一种存储结构,而队列属于线性表,因此,循环队列也是线性表;带链的队列是队列的一种存储结构.因此,选项A),C)、D)都是正确的。循环链表是一般线性表的一种链式存储结构,它不是循环队列的存储结构。因此,选项B)中的说法是错误的。