我正在学习链表,我试图创建一个函数,遍历链表并打印每个值。然而,在 while 循环结束时,当我经过最后一个节点时,我遇到了分段错误。我认为通过将条件从(temp!= NULL)更改为(temp->next!= NULL),可以消除分段错误,但是我仍然遇到了错误。我需要一些帮助。我提供了打印函数,其中出现错误,但如果需要,我也可以提供完整的代码。
void printList(node_t *head){
node_t *temp = head;
if (temp != NULL) {
while (temp->next != NULL) {
int i = temp->value;
printf("%d\n", i);
temp = temp->next;
}
}
}
添加了更多的代码。
#include <stdio.h>
#include <stdlib.h>
struct node{
int value;
struct node *next;
};
typedef struct node node_t;
void printList(node_t *head){
node_t *temp = head;
if (temp != NULL) {
while (temp->next != NULL) {
int i = temp->value;
printf("%d\n", i);
temp = temp->next;
}
}
}
node_t *create_new_node(int value){
node_t *next_pointer = malloc(sizeof(node_t));
next_pointer->value = value;
next_pointer->next = NULL;
return next_pointer;
}
node_t *insert_at_head(node_t **head, node_t *new_node){
new_node->next = *head;
*head = new_node;
return new_node;
}
int main(){
node_t *tmp, *head;
for(int i= 0; i<25; i++){
tmp = create_new_node(i);
insert_at_head(&head, tmp);
}
printList(head);
return 0;
}