У меня есть структура узла LinkedList, определенная так:
struct intnode {
int item;
struct intnode *next;
};
typedef struct intnode IntNode;
, которую я использую для простой сортировки. Однако при создании этого связанного списка у меня возникают проблемы с областью действия. В моей основной функции у меня есть объект IntNode заголовка Null, который служит первым элементом в списке, однако я не могу изменить его в своей функции вставки, несмотря на то, что я передаю указатель на него. Код никогда не достигает оператора print, говоря, что список больше не пуст, что меня смущает. Имеет ли это какое-то отношение к определению нового элемента IntNode для добавления в функцию вставки, которая затем выбрасывается после выполнения функции?
int main() {
IntNode *header = NULL;
printf("Enter some numbers, ending with -1: ");
int a;
while(a != -1) {
scanf("%d",&a);
if(a != -1) {
insert(header, a);
}
}
return 0;
}
IntNode *createNode(int val) {
IntNode *new_node;
new_node = malloc(sizeof(IntNode));
new_node->item = val;
return new_node;
}
void insert(IntNode *header, int val) {
IntNode *newNode = createNode(val);
if(header == NULL) { //list is empty, so insert at front
printf("list still empty\n");
newNode->next = header;
header = newNode;
printf("%d",header->item);
} else {
printf("the list is no longer empty...");
//do more stuff here
}
}