我正在尝试用 C 语言创建一个列表,在头部插入新元素,然后我想打印元素的值。
这是我编写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct clients
{
int stato; //stato del giocatore : 0 libero 1 occupato
struct clients *next; //puntatore all'elemento successivo della lista
};
typedef struct clients player; /* per comodita' */
// funzione che inserisce elem in testa alla lista
void inserisci(player *elemento, player *lista)
{
elemento->next=lista;
lista=elemento;
}
// funzione che visualizza la lista
void visualizza(player *lista)
{
player *p = lista; //creo puntatore alla lista passatagli
while ( p != 0)
{
printf("valore %d \n",p->stato);
p=p->next;
}
}
// main principale
int main(void)
{
player *first = NULL; /* puntatore al primo elemento della lista */
player *pippo = NULL;
int i;
printf("inizio inserimento \n");
for (i=1;i<=10;i++)
{
pippo=malloc(sizeof(player));
pippo->stato=i;
pippo->next=NULL;
inserisci(pippo,first);
pippo = NULL;
}
printf("fine inserimento. Ora stampa ! \n");
visualizza(first);
return 0;
}
但是当我运行代码时,它不会打印列表元素的值:/
最佳答案
您正在分配给局部变量:
void inserisci(player *elemento, player *lista)
{
elemento->next=lista;
lista=elemento; /* Here, the local variable is affected */
}
更改为:
void inserisci(player *elemento, player **lista)
{
elemento->next=*lista;
*lista=elemento; /* The passed variable is affected */
}
在main
中:
inserisci(pippo,&first);
关于c - 在链表的头部插入一个新元素并打印元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24426138/