具有虚拟头尾的双链表实现[关闭]

问题描述 投票:-2回答:2

我有以下内容:typedef struct d_node d_node_t;

struct d_node
    {
        void *data;
        d_node_t *next;
        d_node_t *prev;
    };
typedef struct d_list d_list_t;
struct d_list
    {
        d_node_t head;
        d_node_t tail;
    };

如何实现d_list_t * DListCreate(void)函数?

c
2个回答
2
投票

我不知道如何实现所需的DListCreate

你的DListCreate()函数可能会创建一个空列表,对吧?这意味着没有实际节点,只有虚拟头和尾节点。所以......问问自己,如果没有实际节点,head->next应该指出什么?同样,tail->prev应该指向什么?创建空列表所需要做的就是创建一个d_list结构,然后适当地设置headtail指针。

提示:myDList.tail的地址是&(myDList.tail)


2
投票
d_list_t *DListCreate(void)
{
    d_list_t *myDList = (d_list_t*)malloc(sizeof(d_list_t));

    if (new_d_list == NULL)
    {
        return(NULL);

    }
   &(myDList.tail)->data = NULL;
   &(myDList.tail)->next = NULL;
   &(myDList.tail)->prev = &(myDList.head)

   &(myDList.head)->data = NULL;
   &(myDList.head)->next = &(myDList.tail);
   &(myDList.head)->prev = NULL;

   return(myDList);
}
© www.soinside.com 2019 - 2024. All rights reserved.