【发布时间】:2017-05-04 12:17:17
【问题描述】:
我想要一个链表数组,显然每个链表都应该有单独的头节点。最初,作为一个例子,我从一个数组元素开始。我将链表存储到 current[0] 中。但它给出了分段错误。如果我使用Node *current,它将创建一个列表并正常工作。但是,我想将列表存储在数组中。代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
Node *current[20];
void insert_beg_of_list(Node *current[0], int data);
void print_list(Node *current[0]);
void insert_beg_of_list(Node *current[0], int data) {
//keep track of first node
Node *head = current[0];
while(current[0]->next != head) {
current[0] = current[0]->next;
}
current[0]->next = (Node*)malloc(sizeof(Node));
current[0] = current[0]->next;
current[0]->data = data;
current[0]->next = head;
}
void print_list(Node *current[0]) {
Node *head = current[0];
current[0] = current[0]->next;
while(current[0] != head){
printf(" %d ", current[0]->data);
current[0] = current[0]->next;
}
}
int main() {
Node *head = (Node *)malloc(sizeof(Node));
head->next = head;
int data = 0 ;
int usr_input = 0;
int i;
int m;
int j;
scanf("%d", &usr_input);
for (i=0; i<usr_input; i++) {
scanf("%d", &data);
insert_beg_of_list(head, data);
}
printf("The list is ");
print_list(head);
printf("\n\n");
return 0;
}
【问题讨论】:
-
Node *current[0]-->Node *current -
你必须经常检查
malloc返回值!= NULL -
@BLUEPIXY 正确,但我敢打赌 OP 将全局
current数组与传递的参数混淆... -
使用 Node *current ,它不会被存储在数组元素中。以后我想用current[1],current[2]等等。
-
currrent[0] = head;....insert_beg_of_list(currrent[0], data);
标签: c data-structures linked-list segmentation-fault