其他分享
首页 > 其他分享> > 双向动态链表

双向动态链表

作者:互联网

基本要素声明

#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;
    }
}

标签:DuLinkList,next,链表,prior,双向,DuLNode,动态,define
来源: https://www.cnblogs.com/wjundong/p/11621644.html