c - 在链表的头部插入一个新元素并打印元素值

标签 c list gcc

我正在尝试用 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/

相关文章:

c++ - 尝试从 C 调用 ObjC 方法时出现链接器错误

c - 复合语句( block )是否被 ANSI C 中的括号表达式包围?

gcc - 使用 icc、gcc 和 clang 的相同实现的不同性能的原因是什么?

c - 如何在大端机器 (C) 上读取 4 字节整数后写入 24 位消息?

c - 在 Eclipse 中构建 Makefile 项目的步骤

c - 交换字节中的位

python - 如何从 Python3 中给定的值列表中获取字符串中每个字符的值?

python - 在列表python中的最后一个元素之前移动第一个元素

c# - 标记列表中除一个重复项以外的所有重复项

c++ - 使用模数不同的值时的速度差异