双向链表的实现
本质: 其实就是定义两个指针域, 分别存放直接前驱结点的指针和直接后继结点的指针.
具体实现
定义一个双向链表
//定义一个双向链表
typedef struct LNode {
int data;
struct LNode* next;
struct LNode* prior;
}LNode, *LinkList;
创建一个指定大小的双向链表
//创建一个指定大小的双向链表
void CreateList(LinkList* L, int n) {
if (n < 1) {
printf("输出有误\n");
return;
}
printf("请输入 %d 个数据:", n);
//创建头结点
*L = (LinkList)malloc(sizeof(LNode));
if (!(*L)) {
exit(0);
}
LinkList rear = *L;
LinkList p = NULL;
for (int i = 0; i < n; ++i) {
p = (LinkList)malloc(sizeof(LNode));
if (!p) {
exit(0);
}
scanf("%d", &p->data);
rear->next = p;
p->prior = rear;
rear = p;
}
rear->next = NULL;
}
求链表的长度
//求链表的长度
int Length(LinkList L) {
int len = 0;
while (L->next != NULL