首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链表错误-C

链表错误-C
EN

Stack Overflow用户
提问于 2013-05-31 19:59:49
回答 4查看 108关注 0票数 0

我只是在摆弄链表,但似乎我的脑海中有很多地方是错误的。我已经用函数试过了,但是我不能让它工作。我认为我可以让它变得更简单,但它仍然不起作用。它通常只打印正确的第一个元素,然后打印随机的大数字(很可能是内存地址)

我只想创建一个列表并打印它的内容。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

struct el{
    int value;
    struct el *next;
};

typedef struct el Elem;



int main()
{
    int nr, i;
    struct el *Head, *Conductor;
    Head = malloc(sizeof(Elem));
    Conductor = Head;
    printf("How many elements do you want to add? ");
    scanf("%d", &nr);
    for(i = 0; i < nr; i++)
    {
        printf("Enter value for element %d:  ", i);
        scanf("%d", &(Conductor->value));
        Conductor = Conductor->next;
        Conductor = malloc(sizeof(Elem));


    }
    free(Conductor->next);
    Conductor->next = NULL;

    Conductor = Head;
    printf("\n");

    for(i = 0; i < nr; i++)
    {
        printf("%d ->  ", Conductor->value);
        Conductor = Conductor->next;
    }

   return 0;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-31 20:05:26

您应该先为Conductor->next分配内存,然后再将Conductor->next分配给Conductor

代码语言:javascript
复制
for(i = 0; i < nr; i++)
{
    printf("Enter value for element %d:  ", i);
    scanf("%d", &(Conductor->value));
    Conductor->next = malloc(sizeof(Elem));
    Conductor = Conductor->next;
}

在赋值之前进行分配是很重要的,否则“旧的”Conductor->next将不会指向新的Conductor

票数 6
EN

Stack Overflow用户

发布于 2013-05-31 20:02:11

您不会为next指针分配内存。

分配前需要进行分配:

代码语言:javascript
复制
scanf("%d", &(Conductor->value));
Conductor->next = malloc(sizeof(Elem));
Conductor = Conductor->next;
票数 5
EN

Stack Overflow用户

发布于 2013-05-31 20:05:56

存储器应该被分配给Conductor->next

按如下方式更改循环:

代码语言:javascript
复制
for(i = 0; i < nr; i++)
{
    printf("Enter value for element %d:  ", i);
    scanf("%d", &(Conductor->value));
    Conductor->next = malloc(sizeof(Elem));
    Conductor = Conductor->next;

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16856776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档