weixin_45631165
weixin_45631165
采纳率81.8%
2019-12-03 20:51 阅读 195

链表相关问题,不知道哪里出错了,求大佬看看?

void InitList(LinkList &L)
{
    L = (LinkList)malloc(sizeof(LNode));
    if (!L)
        exit(OVERFLOW);
    L->next = nullptr;
}
Status ListEmpty(LinkList L)
{
    if (L->next)
        return FALSE;
    else
        return TRUE;
}
int ListLength (LinkList L)
{
    LinkList q;
    q = L->next;
    int i = 0;
    while (q)
    {
        i++;
        q = q->next;
    }
    return i;
}
int main()
{
    LinkList L;
    ElemType e;
    Status i;
    int j, k;
    InitList(L);  //构造一个空的链表
    for (j = 1; j <= 5; j++)
    {
        ListInsert(L, 1, j);  //在链表L的第一个元素之前插入j
    }
    for (j = 1;j <= 5; j++)
    {
        L = L->next;
        printf("%d\n", L->date);
    }
    i = ListEmpty(L);
    printf("是否为空表? i =%d(1:是,0:否),表L的长度 = %d\n",i, ListLength(L));
    system("pause");
        return 0;
}

图片说明

求大佬看一下啊 为什么前边输出了54321 后边还显示为空表啊 ,自己折腾了半天 没弄明白哪里错了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2019-12-03 23:51
    for (j = 1;j <= 5; j++)
    {
        L = L->next;
        printf("%d\n", L->date);
    }
    

    这代码将L拨到后面去了
    可以写
    LinkList L1 = L;
    for (j = 1;j <= 5; j++)
    {
    L = L->next;
    printf("%d\n", L->date);
    }
    L = L1;
    ...

    点赞 1 评论 复制链接分享
  • alongname alongname 2019-12-03 23:52

    你输出时候用了
    L=L->next
    L被迭代了,所以你输出完以后,L实际上移动到了链表尾部。

    点赞 评论 复制链接分享

相关推荐