错误,使用C编程的链表
我正在尝试编写简单的推送函数,在运行时之前一切正常,执行的代码崩溃。任何人都可以澄清原因,好吗错误,使用C编程的链表,c,linked-list,push,singly-linked-list,C,Linked List,Push,Singly Linked List,我正在尝试编写简单的推送函数,在运行时之前一切正常,执行的代码崩溃。任何人都可以澄清原因,好吗 #include<stdio.h> #include<stdlib.h> typedef struct list{ int order; struct list *next; }list; void push(struct list **arg,int i); int main() { struct list **ptr=NULL; for(int i=0;i&
#include<stdio.h>
#include<stdlib.h>
typedef struct list{
int order;
struct list *next;
}list;
void push(struct list **arg,int i);
int main()
{
struct list **ptr=NULL;
for(int i=0;i<10;++i){
push(ptr,i);
}
return 0;
}
void push(struct list **arg,int i){
struct list *temp;
temp= malloc(sizeof(list));
temp->order=i;
temp->next=*arg;
*arg=temp;
}
#包括
#包括
类型定义结构列表{
整数阶;
结构列表*下一步;
}名单;
无效推送(结构列表**arg,int i);
int main()
{
结构列表**ptr=NULL;
对于(int i=0;iorder=i;
临时->下一步=*参数;
*arg=温度;
}
写入
list *ptr=NULL;
^^^
for(int i=0;i<10;++i){
push( &ptr,i);
^^^^
}
那么这个解引用
*ptr
结果导致未定义的行为。
struct list**ptr=NULL;
需要struct list*ptr=NULL
和push(ptr,i);
然后变成push(&ptr,i);
但是当我将它传递给另一个函数(如打印函数)时,它工作正常,您能澄清原因吗先生?无效打印列表(列表**头){while!=NULL){printf(“%d\n”,(*head)->order);//工作正常!*head=(*head)->next;}}@YasserMohamed我不知道现在如何添加新元素以及如何调用函数。您可以问一个新问题。
*ptr