注册 登录
编程论坛 C语言论坛

求助有关链表的问题 输出的时候多了一个零

d7se123 发布于 2020-03-19 18:33, 2324 次点击
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

typedef struct Node
{
    int data;
    struct Node* next;
}SLIST;

SLIST* List_Create();
int List_Print(SLIST* pHead);

SLIST* List_Create()
{
    int num = 0;
    SLIST* pHead = NULL;
    SLIST* pCur = NULL;
    while (num != -1)
    {
        SLIST* pM = (SLIST*)malloc(sizeof(SLIST));
        pM->data = num;
        pM->next = NULL;
        if (pHead == NULL)
        {
            pHead = pCur = pM;
        }
        else
        {
            pCur->next = pM;
            pCur = pM;
        }
        printf("请输入num的值:");
        scanf("%d", &num);
    }
    printf("num的值为-1,存值结束");
    return pHead;
}

void main()
{
    SLIST* pHead = NULL;
    pHead = List_Create();

    List_Print(pHead);
    system("pause");
}

int List_Print(SLIST* pHead)
{
    SLIST* p = NULL;
    for (p = pHead; p; p = p->next)
    {
        printf("%d ", p->data);
    }
    printf("\n");
}
9 回复
#2
d7se1232020-03-19 18:34
感觉是前面的num=0  导致第一个结点的数据域是0
应该怎么改进呢?
#3
forever742020-03-19 19:07
有些数据结构的书喜欢用头结点,有些喜欢用头指针,你很不小心地混淆了二者。
#4
forever742020-03-19 19:09
把输入num值拎到malloc上方不就行了?
#5
forever742020-03-19 19:11
另外前辈告诫过我,没有free的malloc是没有灵魂的。
#6
d7se1232020-03-20 13:27
回复 5楼 forever74
太感谢大哥了 忘记malloc了
#7
d7se1232020-03-20 19:17
回复 4楼 forever74
大哥 我把输入num放前面 结果我输入-1的时候,-1被当成结点的元素保存了

SLIST* List_Create()
{
    int num = 0;
    SLIST* pHead = NULL;
    SLIST* pCur = NULL;
    while (num != -1)
    {
        printf("请输入num的值:");
        scanf("%d", &num);
        SLIST* pM = (SLIST*)malloc(sizeof(SLIST));
        pM->data = num;
        pM->next = NULL;
        if (pHead == NULL)
        {
            pHead = pCur = pM;
        }
        else
        {
            pCur->next = pM;
            pCur = pM;
        }
    }
    printf("num的值为-1,存值结束");
    return pHead;
}
只有本站会员才能查看附件,请 登录
#8
d7se1232020-03-20 19:40
回复 3楼 forever74
    if (num == -1)
    {
        break;
    }

已经解决了 加个这个就OK
#9
d7se1232020-03-24 19:28
回复 3楼 forever74
大佬 我新的代码 遇到问题了  头指针和头结点 分别怎么用代码实现 ?
大致讲一下就OK 我去修改代码
#10
maomao123452020-03-25 09:07
呵呵,别问我
1