迷途的启木菌 2020-06-28 13:53 采纳率: 50%
浏览 125
已采纳

链表的结点删除,两种写法几乎一样,但是不知道其中一个为什么是错的

第一个

int Delete(LinkList *L, int i)
{/*删除某个位置上的数据*/
    LinkList q, p = *L;
    int j = 1;
    while (j++ < i && p)
        p = p->next;
    if (j > i + 1 || !p)
        return ERROR;
    q = p->next;
    p->next = q->next;
    free(q);
    return OK;
}

第二个

int Delete(LinkList *L,int i)
{/*删除某个位置上的数据*/
    LinkList q, p = (*L)->next;
    int j=1;
    while (j++ < i && p)
        p = p->next;
    if (j > i+1 || !p) 
        return ERROR;
    q = p;
    p= q->next;
    free(q);
    return OK;
}

感觉第一个函数和第二个函数一样的啊,但是第一个可以正常运行,第二个的传递结果有错
求解为什么

  • 写回答

1条回答 默认 最新

  • qiu_shaofeng 2020-06-28 16:16
    关注

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型