指向错误列表成员

时间:2015-01-15 18:20:36

标签: c list pointers

这可能是一个不起眼的问题,但是你能解释一下为什么运行这个我打印列表的最后一个成员而不是第一个?我错过了什么吗?

struct nodo {
int info;
struct nodo *prec;
struct nodo *succ;
} ;
typedef struct nodo nodo;



    nodo *leggi_lista(void);

 int main (void) {

struct nodo *q;

q= NULL;
q=leggi_lista();

printf("%d\n\n", q->info);   //should print first member of the list

return 0;

}

nodo *leggi_lista(void) {       //creating list 
    nodo *p, *primo=NULL;
    int i, n;
    printf("Numero di elementi: ");
    scanf("%d", &n);
    printf("Inserisci %d numeri: ", n);
    for (i=0; i<n; i++) {
            p = malloc(sizeof(struct nodo));
            scanf("%d", &p->info);
            p->succ = primo;
            primo = p;
            }


    return (primo) ;}

aaand我不知道还有什么我可以添加帖子助手欺负我:(

1 个答案:

答案 0 :(得分:1)

您将从保存primo中的值的函数返回p,这是由最后一个malloc()得到的,显然您会看到最后一个值被打印出来。

您需要修复您的功能才能创建列表。您需要保持列表的头部完好无损并从函数返回head并从head打印到列表末尾。