AO7 发表于 2021-12-1 17:45:42

C语言单链表的问题

本帖最后由 AO7 于 2021-12-1 22:02 编辑

#include <stdio.h>
#include <stdlib.h>

struct Person
{
        int age;
        int height;
        struct Person *next;
};

void getInput(struct Person *pPerson)
{
        printf("age:");
        scanf("%d", &(pPerson->age));
        printf("height:");
        scanf("%d", &(pPerson->height));
}

void addPerson(struct Person **ppHead)
{
        struct Person *pPerson, *temp;

        pPerson = (struct Person *)malloc(sizeof(struct Person));
        if (pPerson = NULL)
        {
                printf("内存分配失败");
                exit(1);
        }

        getInput(pPerson);

        if (*ppHead != NULL)
        {
                temp = *ppHead;
                *ppHead = pPerson;
                pPerson->next = temp;
        }
        else
        {
                *ppHead = pPerson;
                pPerson->next = NULL;
        }

}

void showPerson(struct Person *pHead)
{
        struct Person *pRead;
        int c = 1;
        pRead = pHead;

        while (pRead != NULL)
        {
                printf("%d %d\n", (*pRead).age, (*pRead).height);
                pRead = pRead->next;
        }
}

void releasePerson(struct Person *pHead)
{
        struct Person *temp;
        while (pHead != NULL)
        {
                temp = pHead->next;
                free(pHead);
                pHead = temp;
        }
}

int main()
{
        struct Person *pHead = NULL;
        for (int i = 0; i < 2; i++)
        {
                addPerson(&pHead);
        }

        showPerson(pHead);
        releasePerson(pHead);

        return 0;
}


我按照《带你学C带你飞》系列单链表1里面的代码敲了,只是把Book变成了Person,里面的元素稍微改了一下,但是不能正常运行。

编译的时候没有报错,但是程序总是莫名其妙的停止,多次运行会发现后台有很多未关闭进程。求解

jackz007 发表于 2021-12-1 18:44:24

本帖最后由 jackz007 于 2021-12-1 18:47 编辑

         解决问题的前提是重现问题,难道你希望别人为了帮你还得照着图片重敲一遍所有代码?
         不要贴图片,把你的代码文本贴进代码框。

AO7 发表于 2021-12-1 19:55:50

jackz007 发表于 2021-12-1 18:44
解决问题的前提是重现问题,难道你希望别人为了帮你还得照着图片重敲一遍所有代码?
          ...

ok

AO7 发表于 2021-12-6 18:35:34

顶一下

万千只cnm 发表于 2021-12-6 21:33:39

自己打断点调试
或者输出值来 确定错误位置
页: [1]
查看完整版本: C语言单链表的问题