鱼C论坛

 找回密码
 立即注册
查看: 817|回复: 1

广义表复制

[复制链接]
发表于 2021-3-6 20:41:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

第一段代码是正确的广义表复制操作,用的引用传参的方式,第二段代码我想改成指针的方式,但不知道11,,12行的函数参数应该怎么填,求大神
void CopyGList(GList >,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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-6 20:52:24 | 显示全部楼层
CopyGList(&((*GT)->ptr.hp),GL->ptr.hp);
CopyGList(&((*GT)->ptr.tp),GL->ptr.tp);
已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 11:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表