先来一个简易图描述下双向链表
这是一个带头节点的双向链表,跟单向链表不一样的是,它可以双向链接。相对于单向链表来说,它向前访问某个数据就容易多了。
实现一个双向链接
1。结构体定义
typedef char DLinkType;
typedef struct DLinkNode {
DLinkType data;
struct DLinkNode* next;
struct DLinkNode* prev;
} DLinkNode;
较单链表来说,双链表多了一个指向前一个节点的指针。
2.节点的创建
DLinkNode* CreatDLinkNode(DLinkType value)
{
DLinkNode* new_node = (DLinkNode*)malloc(sizeof(DLinkNode));
new_node->data = value;
new_node->prev = NULL;
new_node->next = NULL;
return new_node;
}
3.节点的销毁
void DestroyNode(DLinkNode* head)
{
free(head);
}
4.链表初始化
vo