主观

阅读下列说明和C程序,将应填入(n)处的字句写在对应栏中。

 [说明]

 借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历

 过程如下:

 若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。

 函数中使用的预定义符号如下:

 typedef struct BiTNode{

 int data;

 struct BiTNode *iChiid,*rChiid;

 } BiTNode,*BiTree;

 typedef struct SNode{/*链栈的节点类型*/

 BiTree elem;

 struct SNode *next;

 }SNode;

 [函数]

 int InOrderTraverse(BiTree root)

 {

 BiTree P;

 SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/

 P=root;

 while(p !=NULL || stop !=NULL){

 if( (1) ){  /*不是空树*/

 q=(SNode*)malloc(sizeof q);

 if(q==NULL)return-1;

 /*根节点指针入栈*/

  (2);

 q->elem=P;

 stop=q;

 P=(3);  /*进入根的左子树*/

 }else{

 q=stop;

  (4);  /*栈顶元素出栈*/

 printf("%d|,q->elem->data); /*防问根节点*/

 P=(5);  /*进入根的右子树*/

 free(q);  /*释放原栈顶元素*/

 }/*if*/

 }/*while*/

 return 0;

 }/*InOrderTraverse*/

(1)

参考答案
您可能感兴趣的试题

阅读以下函数说明和Java代码,将应填入(n)处的字句写上。

 [说明]

 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显示display()。

 需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXCircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象;当Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图7-1显示了各个类间的关系。以下是JAVA语言实现,能够正确编译通过。

 [图7-1]

  

 [Java代码]

 //Shape.java文件

 public interface Shape{

   public (1) void display();

 }

 //XXCircle.jave文件

 public class XXCircle{

   public void displayIt(){

   //省略具体实现

   }

 }

 //Circle.java文件

 public class Circle (2) Shape{

   private XXCircle pcx=(3);

   public void display(){

     pcx.displayIt();

   }

 }

 //Factory.java文件

 public class Factory{

   public (4) getShapeInstance(int type){

     switch(type){

     case 1:return new Line();

     case 2:return new Square();

     case 3:return new Circle();

     default:return null;

     }

   }

 }

 //Main.java文件

 public class Main{

   public static void main(String[]args){

     int type=1;

     Factory factory=new Factory();

     Shape s;

     s=factory. (5);

     if(s==null){

       System.out.println("Error get the instance!");

       return;

     }

     s.display();

     return;

   }

 }

(1)

阅读以下说明和C++代码,将应填入(n)处的字句写上。

 [说明]

 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。

 需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXcircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象: Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图6-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。

 [图6-1]

 

 [C++代码]

 class Shape{

 public:

    (1) void display()=0;

 };

 class Line:public Shape{//省略具体实现

 };

 class Square:public Shape{//省略具体实现

 };

 class XXCircle{

 public:

   void displayIt(){

   //省略具体实现

   }

 //省略其余方法和属性

 };

 class Circle:public Shape{

 private:

   XXCircle *pxc;

 public:

   Circle();

   void display();

 };

 Circle::Circle(){

   pxc=(2);

 }

 void Circle::display()

 {

   pxc->(3);

 }

 class Factory{

 public:

    (4) getshapeInstance(int type){//生成特定类实例

     switch(type){

       case 1:return new Square;

       case 2:return new Line;

       case 3 :return new Circle;

       default:return NULL;

     }

   }

 };

 void main(int argc,char*argv[]){

   if(argc !=2){

     cout<<"error parameters!"<<endl;

     return;

   }

   int type=atoi(argv[1]);

   Factory factory;

   Shape*s=factory. (5);

   if(s==NULL){

     cout<<"Error get the instance!"<<endl;

     return;

   }

   s->display();

   delete s;

   return;

 }

(1)

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服