请用C语言写一段定义双链表的代码,并指出它和单链表在代码上的不同。

下面是一段C语言代码,定义了双链表:

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

typedef struct DNode{
    int data;
    struct DNode *pre;
    struct DNode *next;
} DNode, *DLinkedList;

DLinkedList createDLinkedList() {
    DNode *head = (DNode *)malloc(sizeof(DNode));
    head->next = NULL;
    head->pre = NULL;