C 链表,指针的故事

C 链表,指针的故事,c,linked-list,chain,pointer-to-pointer,C,Linked List,Chain,Pointer To Pointer,我有以下代码: void pushInList(t_chan **chan, char *name, char *nick_user) { t_chan *new_channel; (void)nick_user; if ((new_channel = malloc(sizeof(t_chan))) == NULL) return ; new_channel->name = name; new_channel->prev =

我有以下代码:

void      pushInList(t_chan **chan, char *name, char *nick_user) 
{
  t_chan        *new_channel;

  (void)nick_user;

  if ((new_channel = malloc(sizeof(t_chan))) == NULL)
    return ;
  new_channel->name = name;
  new_channel->prev = (*chan);
  (*chan) = new_channel;
} 

display_list(t_chan *chan, int fd)
{
  int           i;

  i = 0;
  while (chan != NULL)
   {
     printf("list : %s\n", chan->name);
     chan = chan->prev;
   }
}

int             create_chanel(int fd, char *buffer, t_chan **chan)
{
  char          *tmp;
  int           i;

  i = 0;
  if ((tmp = get_param(fd, buffer, 2, "NICK")) == NULL)
    return (EXIT_FAILURE);
  while ((*chan) != NULL)
   {
    /* FUTUR CHECK OF EXISTING CHANEL*/
    (*chan) = (*chan)->prev;
   }
  if ((*chan) == NULL)
    pushInList(chan, tmp, "Kilian");
  return (EXIT_SUCCESS);
}

int             main()
{
  t_chan        *chan;
  char          *test;

  chan = NULL;
  test = strdup("JOIN Coucou");
  create_chanel(4, test, &chan);
  test = strdup("JOIN Google");
  create_chanel(4, test, &chan);
  printf("-------------------\nlast display :\n");      
  display_list(chan, 4);
}
我不明白为什么我的列表每次都是空的。我传递了一个指针,但在我的主列表中,列表没有保留其值。 你能帮我吗,我不明白

这是通道的链表,当客户端发送“Join Coucou”时,如果通道Coucou不存在,我将创建一个新节点

提前谢谢大家,,
诚恳地在create_chanel中::
(*chan)=(*chan)->prev-->
chan=&(*chan)->prev
(并且:如果((*chan)==NULL)
在循环之后,您不需要
),您可以查看我的双链接列表示例(),这可能更容易理解列表的工作原理。