微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结构之间的多个箭头运算符

如何解决结构之间的多个箭头运算符

我正在尝试创建一个双向链接列表,该列表具有一个在列表末尾添加节点的功能我有两种typedef结构:一种用于Node,一种用于双向链表。

在insert_last()中,尝试将list-> tail-> next设置为new_node时出现错误错误是“不允许指向不完整的类类型的指针”,是指DoublyLinkedList。我想我在制作结构时做错了什么,但无法弄清楚为什么它不起作用。

#include <stdio.h>
#include <stdlib.h>

typedef struct NodeStruct
{
    int data;
    struct Node *next;
    struct Node *prev;
} Node;

typedef struct DoublyLinkedListStruct
{
    int size;
    struct Node *head;
    struct Node *tail;
} DoublyLinkedList;

Node* newNode(int data,Node* next,Node* prev)
{
    Node* new_node = (Node*)malloc(sizeof(Node));
    new_node->data = data;
    new_node->next = next;;
    new_node->prev = prev;
    return new_node;
};

void insertion_beginning(DoublyLinkedList* list,int new_data)
{
    Node* new_node = newNode(new_data,list->head,NULL);
    list->head = new_node;
    if (!list->tail)
    {
        list->tail = new_node;
    }
    list->size++;
    
}
void insertion_last(DoublyLinkedList* list,int new_data)
{
    Node *new_node = newNode(new_data,NULL,list->tail);
    if(list->tail)
    {
        list->tail->next = new_node;
    }
    else
    {
        list->head = new_node;
    }
    list->tail = new_node;
    list->size++;
}

解决方法

您将tail和其他几个字段定义为类型struct Node *。您没有定义任何此类结构。

您想将其更改为使用struct NodeStruct *

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。