我有以下几点: 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)函数?
答案 0 :(得分:2)
我不知道如何实现所需的DListCreate
您的DListCreate()
函数可能会创建一个空列表,对吗?这意味着没有实际的节点,只有虚拟的头节点和尾节点。因此...问自己,如果没有实际节点,head->next
应该指向什么?同样,tail->prev
应该指向什么?创建空列表所需要做的就是创建d_list
结构之一,然后适当设置head
和tail
指针。
提示:myDList.tail
的地址为&(myDList.tail)
。
答案 1 :(得分: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);
}