我正在键入包含列表的代码,但我在函数 print_list 中有警告。 编译器突出显示print_array的第3行,即 l = l-> head-> next 。 有人可以帮帮我吗?
void print_list(list_struct* l){
while(l!=NULL){
printf("%s %s\n", l->head->content.name, l->head->content.surname);
l=l->head->next;
}
}
遵循结构的定义:
typedef struct {
char name[50];
char surname[50];
}t_contact;
typedef struct node_struct node_struct;
struct node_struct{
t_contact content;
node_struct* next;
node_struct* prev;
};
typedef struct list_struct list_struct;
struct list_struct{
node_struct* head;
node_struct* tail;
int count;
};
答案 0 :(得分:1)
将您的打印功能更改为:
void print_list(list_struct* l){
node_struct* tempnode;
tempnode = l->head;
while(tempnode){
printf("%s %s\n", tempnode->content.name, tempnode->content.surname);
tempnode=tempnode->next;
}
}
这将打印您的列表,也不会影响列表的头指针,在尝试执行l = l->head->next
时会意外更改,这也是语法错误,或者在尝试执行l->head = l->head->next
时。