CyberChu 2022-09-18 22:31 采纳率: 0%
浏览 59
已结题

链表的长度为0,那么头节点为NULL吗 ?

链表的长度为0,那么头节点为NULL吗 ?
在写链表的时候,遇到一个问题。
我让链表长度为0,然后在任意位置插入一个值
结果没有插入进去,说明头指针是NULL
在插入函数中有这样的代码来判断是否能插入。
之前创建链表,默认头节点的指针域为NULL,但数据域没管
所以链表长度为0,头节点到底是不是NULL?(求靓仔美女们给我一颗定心丸,蟹蟹)

bool insert_list(PNODE pHead, int pos, int val)
{
    int i = 0;
    PNODE tmp = pHead;
//    if(NULL == tmp->pNext)
    //    return false;
    while(NULL != tmp && i<pos-1)
    {
        tmp = tmp->pNext;
        ++i;
    }
    if(NULL == tmp || i > pos-1)**//在这里判断**
    {
        return false;
    }
    PNODE pNew = (PNODE)malloc(sizeof(NODE));
    if(NULL == pNew)
    {
        printf("链表创建失败!");
        exit(-1);
    }
    pNew->data = val;
    pNew->pNext = tmp->pNext;
    tmp->pNext = pNew;
    return true;
} 

  • 写回答

1条回答 默认 最新

  • CyberChu 2022-09-18 22:57
    关注

    知道为什么了,在判断条件前面还有个循环,
    while循环还是执行了,tmp指向了NULL,所以后面if里的代码能被执行
    结论是:头节点被创建出来了就不会是NULL。

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

报告相同问题?

问题事件

  • 系统已结题 9月26日
  • 已采纳回答 9月18日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵