一世轻尘 发表于 2021-3-6 20:41:50

广义表复制

本帖最后由 一世轻尘 于 2021-3-6 20:49 编辑

第一段代码是正确的广义表复制操作,用的引用传参的方式,第二段代码我想改成指针的方式,但不知道11,,12行的函数参数应该怎么填,求大神
void CopyGList(GList &GT,GList GL)
{
    if(!GL) GT=NULL;
    else{
      GT=new GLNode;
      if(!GT) Error("Overflow!");
      GT->tag=GL->tag;
      if(GL->tag==ATOM)
            GT->data=GL->data;
      else{
            CopyGList(GT->ptr.hp,GL->ptr.hp);
            CopyGList(GT->ptr.tp,GL->ptr.tp);
      }
    }
}void CopyGList(GList *GT,GList GL)
{
    if(!GL) *GT=NULL;
    else{
      *GT=new GLNode;
      if(!GT) Error("Overflow!");
      (*GT)->tag=GL->tag;
      if(GL->tag==ATOM)
            (*GT)->data=GL->data;
      else{
            CopyGList();
            CopyGList();
      }
    }
}#include<iostream>

using namespace std;

typedef int ElemType;
typedef enum{ATOM,LIST} ElemTag;
typedef struct GLNode{
    ElemTag tag;
    union{
      ElemType data;
      struct{
            struct GLNode *hp,*tp;
      }ptr;
    };
}GLNode,*GList;

一世轻尘 发表于 2021-3-6 20:52:24

CopyGList(&((*GT)->ptr.hp),GL->ptr.hp);
CopyGList(&((*GT)->ptr.tp),GL->ptr.tp);
已解决
页: [1]
查看完整版本: 广义表复制