#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef char ElemType;
typedef struct DNode
{
ElemType data;
struct DNode *prior;
struct DNode *next;
}DLinkNode;
int CreateList(DLinkNode *L, ElemType a[], int n )
{
DLinkNode * s , * r;
L = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建头结点
r = L;
for(int i = 0; i < n; i++)
{
s = (DLinkNode *)malloc(sizeof(DLinkNode));
s -> data = a[i];
r -> next = s;
s -> prior = r;
r = s;
}
r -> next = NULL;
} //尾插法创建双链表,在主函数没有用到此函数,可省略此函数,直接用ListInsert函数进行插入操作
int InitList(DLinkNode *L)
{
L -> next = NULL;
L -> prior = NULL;
}
//初始化
int ListInsert(DLinkNode *L, int i, ElemType e)
{
DLinkNode *p = L, *s;
int j = 0;
while(j < i - 1)
{
j++;
p = p -> next;
}
s = (DLinkNode *)malloc(sizeof(DLinkNode));
s -> data = e;
s -> next = p -> next;
if (p -> next != NULL)
p -> next -> prior = s;
s -> prior
实现双链表的各基本算法
最新推荐文章于 2022-05-10 15:05:22 发布

最低0.47元/天 解锁文章
2561

被折叠的 条评论
为什么被折叠?



