隔壁王健喜儿 2023-10-30 10:48 采纳率: 96%
浏览 4
已结题

关于引用传递、链表传递、指针传递的问题


typedef struct _LNode {
    float cof;
    int exp;
    struct _LNode* next; 
} LNode,*Polynomial;

void Add (Polynomial A, Polynomial B, Polynomial &C, int la, int lb) 
{
    C = new LNode;
    C -> next = NULL;
    Polynomial cur = C;
    auto a = A -> next; 
    auto b = B -> next;

    while (a && b) {
        if (a -> exp < b -> exp) {
            cur -> next = a;
            cur = a;
            a = a -> next;
        } else if (a -> exp > b -> exp) {
            cur -> next = b;
            cur = b;
            b = b -> next;
        } else {
            a -> cof += b -> cof;
            b = b -> next;
            if (a -> cof == 0) {
                cur -> next = a -> next;
                a -> next = cur -> next;
            } else {
                cur -> next = a;
                cur = a;
                a = a -> next;
            }

        }
    }
    if (la > lb) cur = a;
    if (la < lb) cur = b;
}

我这个add函数,就是C=A+B,只有C是引用传递的,但事实上调用这个函数后AB都变了,这是为什么呀

img

思路大概就是:利用cur指针在AB链表上类似“穿针引线”的操作,要是我每次新建一个tmp节点储存下来再插入到C链表,就是正确的。

这个AB参数到底是怎样传递的?要是值传递,那么它为什么会变?要是指针传递,那参数C还要引用传递的意义是什么?

  • 写回答

3条回答 默认 最新

  • .starch 2023-10-30 10:53
    关注

    你定义的时候,Polynomial 不就是指向_LNode 类型的指针吗。

    //等价
    void Add (_LNode *A, _LNode * B, _LNode *& C...)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月30日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?