双向动态链表
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 */
以上是关于双向动态链表的主要内容,如果未能解决你的问题,请参考以下文章