; else if (pa -> data > pb ->data)
{
(1) ;
pre = pb;
pb = pb -> next;
(2) ;
}
else
{
q = pb; pb = pb -> next; free (q);
}
}
if (pb)
(3) ;
}
(1)
(2)
(3)
31.已知串的存储结构为动态存储分配的顺序串。阅读下列算法,并回答问题:
(1)写出执行函数调用 strc (s, r)的返回结果,其中s=〃aba〃, r=〃abababa〃;
(2)简述函数strc的功能。
int strc (HString * sub, HString * str)
{
int i=0, j, k, count =0;
while (i < str -> length – sub -> length +1)
{
j=i; k=0;
while (k <sub -> length && str -> ch[j] = =sub -> ch[k] )
{
j++; k++;
}
if (k = = sub -> length)
{count ++; i=j-sub -> length +1;}
else i++;
}
return count;
}
(1)
(2)
32.下列函数MDFSForest的功能是,对一个采用邻接矩阵作存储结构的图进行深度优先搜索遍历,输出所得深度优先生成森林中各条边。请在空缺处填入合适内容,使其成为一个完整的算法。
#define MaxMun 20 //图的最大顶点数
typedef struct {
char vexs [MaxNum]; //字符类型的顶点表
int edges [MaxNum][MaxNum]; //邻接矩阵
int n, e; //图的顶点数和边数
}MGraph; //图的邻接矩阵结构描述
typedef enum {FALSE, TRUE} Boolean;
Boolean visited [MaxNum];
void MDFSTree (MGraph *G, int i);
void MDFSForest (MGraph *G)
{
int i, k;
for (i=0; i <G -> n; i++)
visited [i] = (1) ;
for (k = 0; k<G -> n; k++)
if (!visited [k]) MDFSTree (G,k);
}
void MDFSTree (MGraph *G, int i)
{
int j;
&n