双向动态链表

Posted wjundong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向动态链表相关的知识,希望对你有一定的参考价值。

基本要素声明

#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);        /* 新结点p先指向两边两个 */
        (*L)->next->prior = p;  /* 后一个prior指针指向p */
        (*L)->next = p;         /* 前一个next指针指向p */
       
    

以上是关于双向动态链表的主要内容,如果未能解决你的问题,请参考以下文章

C语言-链表(单向链表双向链表)

C语言-链表(单向链表双向链表)

redis 5.0.7 源码阅读——双向链表

第一章-从双向链表学习设计

从0开始手写ArrayList动态数组和LinkedList双向链表

从0开始手写ArrayList动态数组和LinkedList双向链表