我想在C中列出一个列表

时间:2018-05-16 16:26:45

标签: c

我正在尝试在C中为学校项目制作一个列表,当我运行它时,它会崩溃。你能帮忙找出错误吗?谢谢你的帮助。

collided = pygame.sprite.spritecollide(player, ob, True)

2 个答案:

答案 0 :(得分:1)

首先,我正在尝试在C中为学校项目制作一个列表,当我运行它时,它会崩溃?。正如评论中所说,使用调试器&找到崩溃的原因。

其次,您应该避免在此Do I cast the result of malloc?处投射malloc()的结果。

 tmp=(node *)malloc(sizeof(node)); -->  tmp = malloc(sizeof(node));

最后但不是最后一个,您只是将head变量传递给append()函数,该函数按值调用,即对head进行的任何更改append()函数在调用(例如main函数)函数时没有受到影响。而不是head变量的地址传递给append()函数。

像这样调用append()函数

node *head = NULL; 
append(&head,ln,col); /* pass the address of head variable */

append()函数的定义

void append(node **head, int ln, int col){
/* ... some code ... */
}

完成append()功能

void append(node **head, int ln, int col){
        node *tmp, *cur;
        cur = *head; 
        tmp = malloc(sizeof(node));
        tmp->ln=ln;
        tmp->col=col;
        tmp->next=NULL; /* every new node next make it to NULL */
        if ((*head) == NULL) /* very first time */
                (*head) = tmp; /* update the head & return */
        else{
                while (cur->next!=NULL) /* move cur to last node */
                        cur=cur->next;
                cur->next=tmp; /* last node next, make it to new node */
        }
}

答案 1 :(得分:-1)

试试此代码

struct node{
int ln;
int col;
node *next;
} node;

void append(node *head, int ln, int col){
  node *tmp, *cur;
  cur=head;
  tmp = malloc( sizeof( node ) );
  tmp->ln=ln;
  tmp->col=col;
  tmp->next=NULL;
  if (head!=NULL)
     head=tmp;
  else{
  while (cur->next!=NULL)
      cur=cur->next;
  cur->next=tmp;
  }
 }