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

关于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调用,这个函数是否引起错误,能否保障节点删除后链表的完整性以及当前循环的完整性

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题