#include<stdio.h>
#include<stdlib.h>
#define ElemType char
typedef struct Node
{
ElemType data;
struct Node* prior, * next;
}DNode, * DoubleList;
//初始化双向链表
void InitDoubleList(DoubleList& L)
{
L = (DoubleList)malloc(sizeof(DNode));
L->next = L;
L->prior = L;
}
//尾插法建立双向链表
void CreatFromTail(DoubleList& L)
{
int flag = 1;
DNode* s, * r;
r = L;
char c;
printf("尾插法建立双向链表,请以此输入双向链表的值,以#结尾\n");
while (flag)
{
c = getchar();
if (c != '#')
{
s = (DoubleList)malloc(sizeof(DNode));
s->data = c;
s->next = r->next;
r->next->prior = s;
s->prior = r;
r->next = s;
r = s;
}
else
{
flag = 0;
r->next = NULL;
}
}
}
//打印当前链表
void print(DoubleList L)
{
DNode* p;
p = L->next;
printf("当前的链表是:\n");
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
printf("\n");
}
//双向链表的插入
void DlinkIns(DoubleList& L, int i, ElemType e)
{
DNode* s, * p;