#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int Elemtype;
typedef struct CLinkList
{
Elemtype data;
struct CLinkList *next;
} CLinkList;
bool InitCLinkList(CLinkList *L){
L = (CLinkList *)malloc(sizeof(CLinkList));
if (L == NULL)
return false;
L->next = L;
}
bool EmptyCLinkList(CLinkList *L){
if (L->next == L)
return true;
else
return false;
}
bool IsCLinkListTail(CLinkList *L, CLinkList *p){
if (p->next == L)
return true;
else
return false;
}
typedef struct CDLinkList
{
Elemtype data;
struct CDLinkList *prior, *next;
} CDLinkList;
bool InitCDLinkList(CDLinkList *L){
L = (CDLinkList *)malloc(sizeof(CDLinkList));
if (L == NULL)
return false;
L->prior = L;
L->next = L;
}
bool EmptyCDLinkList(CDLinkList *L){
if (L->next == L)
return true;
else
return false;
}
bool IsCDLinkListTail(CDLinkList *L, CDLinkList *p){
if (p->next == L)
return true;
else
return false;
}
bool InsertNextCDNode(CDLinkList *p, CDLinkList *s){
s->next = p->next;
p->next->prior = s;
s->prior = p;
p->next = s;
return true;
}
bool DeleteNextCDNode(CDLinkList *p, CDLinkList *q){
p->next = q->next;
q->next->prior = q;
free(q);
return true;
}