ng″时,写出f31(t1,t2)的返回值;
(4)简述函数f31的功能。
inf f31(LinkStr t1,LinkStr t2)
{//串值以′\0′为结束符
int i;
while (1){
for (i=0;i<NodeSize;i++){
if (t1->data[i]= =′\0′&&t2->data[i]= =′\0′return 0;
if(t1->data[i]= =′\0′))return –1;
if(t2->data[i]= =′\0′))return 1;
if(t1->data[i]>t2->data[i]return 1;
if(t1->data[i]<t2->data[i]return –1;
}
t1=t1->next;
t2=t2->next;
}
}
(1)
(2)
(3)
(4)
32.设二叉树采用二叉链表存储结构,结点的数据域data为字符类型。阅读下列算法,并回答问题:
(1)对于如图所示的二叉树,写出执行函数f32的输出结果;
(2)简述函数f32的功能。
void f32(BinTree T)
{ Stack s; //定义栈s
BinTree p,q;
if (T= =NULL) return;
InitStack(&s);
p=T;
do {
while (p){
Push(&s,p);
if (p->lchild)p=p->lchild;
else p=p->rchild;
}
while (!Stack Empty(s)&&q=StackTop(s)&&q->rchild= =p){
p=Pop(&s);
printf(″%c″,p->data);
}
if(!StackEmpty(s)){
q=StackTop(s);
p=q->rchild;
}
} while (! Stack Empty(S));
}
(1)
(2)
33.已知有向图的邻接表表示的形式说明如下:
#define Max Num 50 //图的最大顶点数
typedef struct node {
int adjvex; //邻接点域
struct node * next; //链指针域
}EdgeNode; //边表结点结构描述
typedef struct {
char vertex; //顶点域
EdgeNode *firstedge; //边表头指针
}VertexNode; //顶点表结点结构描述
typedef struct{
Vertex Node adjlist [MaxNum]; //邻接表
int n,e; //图中当前的顶点数和边数
}ALGraph; //邻接表结构描述
下列函数f33是从有向图G中删除所有以vi为弧头的有向边。请在空缺处填入合适的内容,使其成为一个完整的算法。
void f33 (ALGraph * G, int i)
{ int j;
EdgeNode * p, *q;
for (j=0;j<G->n;j= + +){
p=G->adjlist [j].firstedge;
while( (1) {
q=p; p=p->next;
}
if(p!=NULL) {
if (p !=G->adjlist[j].firstedge)q->next=p->next;
else( (2) &nbs
|