1) 编写算法函数int equal(tree t1, tree t2),判断两棵给定的树是否等价;

 

 1  int equal(tree t1,tree t2)
 2  {
 3     int k;
 4         if(t1==NULL&&t2==NULL)
 5         return TRUE;
 6     else if(t1!=NULL&&t2==NULL||t1==NULL&&t2!=NULL)
 7              {
 8               return FALSE;
 9          }
10           else if(t1->data!=t2->data)
11           {
12               return FALSE;
13           }
14           for(k=0;k<m;k++)
15           {
16               equal(t1->child[k],t2->child[k]);
17               if(equal(t1->child[k],t2->child[k])==FALSE)
18               {
19                   return FALSE;
20               }
21               else
22                   return TRUE;
23           }
24   }    

 

2) 编写算法函数void preorder(bintree t)实现二叉树t的非递归前序遍历;

 

 1 void preorder1(bintree t)
 2 {
 3     seqstack s;
 4     init(&s);
 5     while(t||!empty(&s))
 6     {
 7         if(t)
 8         {
 9             printf("%c",t->data);
10             push(&s,t);
11             t=t->lchild;
12         }
13         else if(!empty(&s))
14         {
15             t=pop(&s);
16             t=t->rchild;
17         }
18     }

 

3)编写算法函数degree(LinkedGraph g)输出以邻接表为存储结构的无向图的各顶点的度。

 1 void degree(LinkedGraph g)
 2 {
 3     int k;
 4     int n;
 5     EdgeNode *p;
 6     for(k=0;k<g.n;k++)
 7     {
 8         p=g.adjlist[k].FirstEdge;
 9         n=0;
10         while(p!=NULL)
11         {
12             n++;
13             p=p->next;
14         }
15         if(k==0)
16         {
17             printf("%d\n",n);
18         }
19         else
20         {
21             printf("%d\n",n);
22         }
23     }
24 }

 

 posted on 2017-12-05 20:26  linlh  阅读(1074)  评论(0编辑  收藏  举报