指向错误的列表成员
pointing wrong list member
这可能是个笨问题,但你能解释一下为什么 运行 我打印的是列表的最后一个成员而不是第一个吗?我错过了什么吗?
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) ;}
aa 我不知道我还能添加什么 post 帮手欺负我:(
您正在 returning primo
来自保存 p
值的函数,这是由最后一个 malloc()
得到的,显然您看到了最后一个值正在打印出来。
您需要修复创建列表的功能。您需要保持列表的头部完好无损,并且 return 函数中的 head
并从 head
打印到列表末尾。
这可能是个笨问题,但你能解释一下为什么 运行 我打印的是列表的最后一个成员而不是第一个吗?我错过了什么吗?
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) ;}
aa 我不知道我还能添加什么 post 帮手欺负我:(
您正在 returning primo
来自保存 p
值的函数,这是由最后一个 malloc()
得到的,显然您看到了最后一个值正在打印出来。
您需要修复创建列表的功能。您需要保持列表的头部完好无损,并且 return 函数中的 head
并从 head
打印到列表末尾。