C链表不兼容的指针类型
C linked list incompatible pointer type
struct list_node {
int value;
struct list_node *next;
};
struct linked_list {
int size;
struct list_node *head;
};
void print_linked_list(struct linked_list *list){
struct linked_list *current = list;
while(current != NULL){
printf("%d ", current->head->value);
current = current->head->next;
}
}
我必须定义一个函数来打印链表,但我收到一条错误消息,指出“不兼容的指针类型”。我知道问题出在“current = current->head->next;”但我怎样才能做到这一点?
current
是 struct linked_list*
,但 current->head->next
是 struct list_node*
。
struct linked_list
和 struct list_node
是两个不同的不相关结构,尽管它们很相似。
您不能将指针分配给不同的类型,因此出现错误消息 不兼容的指针类型。
你可能想要这个:
void print_linked_list(struct linked_list* list) {
struct list_node* current = list->head;
while (current != NULL) {
printf("%d ", current->value);
current = current->next;
}
}
函数
void print_linked_list(struct linked_list *list){
struct linked_list *current = list;
while(current != NULL){
printf("%d ", current->head->value);
current = current->head->next;
}
}
没有意义。
在此声明中
current = current->head->next;
指针 current
的类型为 struct linked_list *
而表达式 current->head->next
的类型为 struct list_node *
.
你的意思好像是
void print_linked_list( const struct linked_list *list )
{
if ( list != NULL )
{
for ( const struct list_node *current = list->head; current != NULL; current = current->next )
{
printf( "%d ", current->value );
}
}
}
struct list_node {
int value;
struct list_node *next;
};
struct linked_list {
int size;
struct list_node *head;
};
void print_linked_list(struct linked_list *list){
struct linked_list *current = list;
while(current != NULL){
printf("%d ", current->head->value);
current = current->head->next;
}
}
我必须定义一个函数来打印链表,但我收到一条错误消息,指出“不兼容的指针类型”。我知道问题出在“current = current->head->next;”但我怎样才能做到这一点?
current
是 struct linked_list*
,但 current->head->next
是 struct list_node*
。
struct linked_list
和 struct list_node
是两个不同的不相关结构,尽管它们很相似。
您不能将指针分配给不同的类型,因此出现错误消息 不兼容的指针类型。
你可能想要这个:
void print_linked_list(struct linked_list* list) {
struct list_node* current = list->head;
while (current != NULL) {
printf("%d ", current->value);
current = current->next;
}
}
函数
void print_linked_list(struct linked_list *list){
struct linked_list *current = list;
while(current != NULL){
printf("%d ", current->head->value);
current = current->head->next;
}
}
没有意义。
在此声明中
current = current->head->next;
指针 current
的类型为 struct linked_list *
而表达式 current->head->next
的类型为 struct list_node *
.
你的意思好像是
void print_linked_list( const struct linked_list *list )
{
if ( list != NULL )
{
for ( const struct list_node *current = list->head; current != NULL; current = current->next )
{
printf( "%d ", current->value );
}
}
}