我有一块橡皮 2021-07-06 15:47 采纳率: 33.3%
浏览 15
已采纳

关于C语言链表指针指向的值改变?

执行deleteNode(headNode, local)后,nextNode结点指向的地址值被改变了;其中deleteNode功能是删除headNode中的local信息

struct Node* deleteFileSameInfo(struct Node* headNode)
{
    struct Node* nextNode = headNode->next;
    if (nextNode == NULL)
    {
        return;
    }
    int i;
    struct Node* frontNode = headNode;
    while (frontNode != NULL)
    {
        char* local = frontNode->data.num;
        nextNode = frontNode->next;
        while (nextNode != NULL)
        {
            for (i = 0; i < strlen(local); i++)
            {
                if (local[i] != nextNode->data.num[i])
                {
                    break;
                }
            }
            if (i == strlen(local))
            {
                printf("发现相同工号(%s),", local);
                deleteNode(headNode, local);
            }
            i = 0;
            nextNode = nextNode->next;
        }
        frontNode = frontNode->next;
    }
    return headNode;
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-07-06 15:51
    关注
     for (i = 0; i < strlen(local); i++)
                {
                    if (local[i] != nextNode->data.num[i])
                    {
                        break;
                    }
                }
                if (i == strlen(local))
                {
                    printf("发现相同工号(%s),", local);
                    deleteNode(headNode, local);
                }
    可以改为:
    if(strcmp(local,nextNode->data.num) == 0)
    {
        printf("发现相同工号(%s),", local);
        deleteNode(headNode, local);
    }
    

    中间夹了个deleteNode调用,这个函数是否引起错误,能否保障节点删除后链表的完整性以及当前循环的完整性

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

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献