更多"任何非空树中有且仅有—个结点没有前驱结点,该结点就是树的 【2】 。"的相关试题:
[填空题]任何非空树中有且仅有一个结点没有前驱结点,该结点就是树的 【2】 。
[填空题]任何非空树中有且仅有—个结点没有前驱结点,该结点就是树的 【2】 。
[填空题]任何非空树中有且仅有一个结点没有前驱结点,该结点就是树的______。
[填空题]在树型结构中,根结点没有 【2】 结点,其余每个结点有且仅有 【3】 个前驱结点;叶结点没有后继结点,其余每个结点的 【4】 结点数不受限制。
[填空题]在树型结构中,根结点没有 【2】 结点,其余每个结点有且仅有 【3】 个前驱结点:叶结点没有后继结点,其余每个结点的 【4】 结点数不受限制。
[填空题]在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 【1】 个前驱结点;最后一个结点没有后继结点,其余每个结点有且只有 【2】 个后继结点。
[填空题]在树型结构中,树根结点没有______结点,其余每个结点的有且只有______个前驱结点;叶子节点没有______结点;其余每个点的后续结点可以有______个。
[简答题]【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int &x)
{ <结点类型说明>
* p =first -> next;
while(p!=frist&& (1) )P=P->next;
if(p! =first) /*链表中存在x*/
{ (2) ;
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first && (3) )p=p->prior;
Current-> next = (4) ; /*插入在P之后*
Current -> prior = P;
P -> next -> prior = current;
P->next= (5) ;
}
else printf("Sorry. Not find! /n"); /*没找到*/
}
[简答题]【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int &x)
<结点类型说明>
* p =first -> next;
while(p!=frist&& (1) )P=P->next;
if(p! =first) /*链表中存在x*/
(2) ;
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first && (3) )p=p->prior;
Current-> next = (4) ; /*插入在P之后*
Current -> prior = P;
P -> next -> prior = current;
P->next= (5) ;
else printf("Sorry. Not find! /n"); /*没找到*/
[填空题]在双链表中,每个结点有两个指针域,一个指向前驱结点,另一个指向 【2】 。