2.链表如果加上了头结点,遍历头结点的时候一定要从头结点的下一个结点开始遍历

本文介绍了在C语言中处理链表时遇到的Segmentationfault错误,重点是当链表有头结点时,如何正确遍历以避免错误。代码示例展示了修正后的遍历方法,强调了从头结点的下一个节点开始的重要性,因为头结点通常不包含数据域,直接访问会导致错误。
摘要由CSDN通过智能技术生成

上面一段代码出现错误,Segmentation fault (core dumped)

//已完成
// 查询用户状态
//返回值是1,用户不存在。返回值是x,是该用户的用户状态
//原
// SessionNode *dbQuerySession(const char UserID[])   //出现segment fault
// {
//     SessionNode* pCur = slist.head;
//     SessionNode* pPre = NULL;
//     while (0 != strcmp(UserID,pCur -> UserID))
//     {
//         pCur = pCur->next;
//     }
//     if (0 == strcmp(UserID,pCur -> UserID))
//     {
//         return pCur;
//     }
//     return NULL;
// };

SessionNode *dbQuerySession(const char UserID[])
{
    SessionNode *pCur = slist.head->next;
    SessionNode *pPre = slist.head;
    while(pCur != NULL)
    {
        if(strcmp(UserID,pCur->UserID))
        {
            pPre = pPre->next;
            pCur = pCur->next;
        }
        else
        { 
            return pCur; //存在UserID
        }
    }
    return NULL;//不存在UserID
};

链表如果加上了头结点,遍历头结点的时候一定要从头结点的下一个结点开始遍历。
不然就会有块segment fault的错误,今天写代码这一块出错了,吃了大亏
头结点中没有数据域,所以如果调用头结点的数据域就会出现错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这里真有意思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值