双向动态链表

基本要素声明

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

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status;
typedef int ElemType;

typedef struct DuLNode
{
    ElemType data;
    struct DuLNode * prior;
    struct DuLNode * next;
}DuLNode,*DuLinkList;

双向动态链表逆序创建

图示:当链表为空,插入第一个元素的情况
双向动态链表
图示:当链表非空,插入其他元素的情况
双向动态链表

void CreateDuList(DuLinkList *L, int n)
{
    *L = (DuLinkList)malloc(sizeof(DuLNode)); /* 创建头结点 */
    (*L)->next = NULL;
    (*L)->prior = NULL;

    DuLinkList p;
    if(n>0) {  /* 如果是第一个结点 */
        p = (DuLinkList)malloc(sizeof(DuLNode));
        scanf("%d",&p->data);
        p->next = (*L)->next;
        p->prior = (*L);
        (*L)->next = p;
        n--;
    }
    for( ; n>0; n--) {
        p = (DuLinkList)malloc(sizeof(DuLNode));
        scanf("%d",&p->data);
        p->next = (*L)->next;
        p->prior = (*L);
        (*L)->next = p;
        (*L)->next->prior = p;
    }
}
上一篇:线索二叉树C++实现


下一篇:论文解读《Learning Deep CNN Denoiser Prior for Image Restoration》