更多"假设以二叉链表作为二叉树的存储结构,其类型定义如下:
typede"的相关试题:
[填空题]
假设以二叉链表作为二叉树的存储结构,其类型定义如下:
typedef struct node{
char data;
struct node*lchild,*rchild; //左右孩子指针
}BinTNode,*BinTree;
阅读下列算法f33,并回答问题:
(1)已知如图所示的二叉树以T为指向根结点的指针,画出执行f33(T)后的二叉树;
(2)简述算法f 33的功能。
void f 33(BinTtee T){
if(T){
f 33(T—>lchild);
f 33(T—>rchild);
if((!T—>lchild)&&L T—>rchild){
T—>lchild=T—>rchild;
T—>rchild=NULL;
}
}
}
(1)
[简答题][说明]
二叉树的二叉链表存储结构描述如下:
typedef struct BiTNode
{ datatype data;
struct BiTNode *lchild, * rchild; /*左右孩子指针*/
}BiTNode,* BiTree;
对二叉树进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从队首取出一个元素,执行下面两个操作:
(1) 访问该元素所指结点;
(2) 若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入队。
此过程不断进行,当队列为空时,二叉树的层次遍历结束。
下面的函数实现了这一遍历算法,其中Visit(datatype a)函数实现了对结点数据域的访问,数组queue[MAXNODE]用以实现队列的功能,变量front和rear分别表示当前队首元素和队尾元素在数组中的位置。
[函数]
void LevelOrder(BiTree bt) /*层次遍历二叉树bt*/
{ BiTree Queue[MAXNODE];
int front,rear;
if(bt= =NULL)return;
front=-1;
rear=0;
queue[rear]= (1) ;
while(front (2) ){
(3) ;
Visit(queue[front]->data); /*访问队首结点的数据域*/
if(queue[front]—>lchild!:NULL)
{ rear++;
queue[rear]= (4) ;
}
if(queue[front]->rchild! =NULL)
{ rear++;
queue[rear]= (5) ;
}
}
}
[填空题]已知链表结点定义如下:
typedef struct node{
char data[16];
struct node *next;
} LinkStrNode;
如果每个字符占1个字节,指针占4个字节,则该链表的存储密度是___________。
[单项选择]有以下程序段:
typedef struct NODE
int num; struct NODE *next;
OLD;
以下叙述中正确的是( )。
A. 以上的说明形式非法
B. NODE是一个结构体类型
C. OLD是一个结构体类型
D. OLD是一个结构体变量
[简答题]已知二叉树的定义如下:typedef struct node{ int data; struct node *lchild, *rchild;}*Bitptr;编写递归算法求二叉树的高度。函数原型为:int f34(Bitptr t);
[单项选择]有以下程序段:
typedef struct node(int data;struct node*next;)*NODE;
NODE P;
以下叙述中正确的是______。
A. P是指向struct node结构变量的指针的指针
B. NODE p;语句出错
C. P是指向struct node结构变量的指针
D. P是struct node结构变量
[单项选择]有以下程序段
typedef struct node(int data; struct node *next;) *NODE;
NODE p;
以下叙述中正确的是______。
(A) P是指向struct node结构变量的指针的指针
(B) NODE p;语句出错
(C) P是指向struct node结构变量的指针
(D) P是struct node结构变量
[简答题]
假设以带头结点的单链表表示有序表,单链表的类型定义如下:
typedef struct node{
int data;
struct node*next;
}LinkNode,*LinkList;
编写算法,输入n个整数构造一个元素值互不相同的递增有序链表(即相同的整数只取一
个)。算法的函数原型给定为
LinkList f 34(int n);
[单项选择]有下列程序段:
typedef struct NODE
int num;struct NODE*next;
OLD;
下列叙述中正确的是( )。
A. 以上的说明形式非法
B. NODE是一个结构体类型
C. OLD是一个结构体类型
D. OLD是一个结构体变量
[单项选择]有以下程序段:
typedef struct NODE
int num, struct NODE *next;
OLD;
以下叙述中不正确的是( )。
A. 以上的说明形式合法
B. NODE是一个结构体类型
C. OLD是一个结构体类型
D. NODE是一个结构体变量
[简答题]
设有单链表类型定义如下: typedef struct node { int data; struct node *next; } *LinkList; 阅读下列算法,并回答问题: void f33(LinkList head, int A, int B) { LinkList p=NULL; While (head !=NULL) { if (head->data>A&&head->datanext; } if (p !=NULL) printf("%d/n",p->data); }
简述算法f33的功能。
[填空题]一棵具有n个结点的二叉树,采用二叉链表存储,则二叉链表中指向孩子结点的指针有_________个。