我正在尝试在C中为学校项目制作一个列表,当我运行它时,它会崩溃。你能帮忙找出错误吗?谢谢你的帮助。
collided = pygame.sprite.spritecollide(player, ob, True)
答案 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;
}
}