📄 dlinklist.cpp
字号:
#include <cstdlib>
typedef int ElemType;
typedef struct DNode
{ ElemType data;
struct DNode *prior,*next;
}DLinkList;
bool InitList_DuL(DLinkList *&L)
{
L=(DLinkList *)malloc(sizeof(DLinkList));
if(L==NULL)
return false;
L->prior=L->next=L;
return true;
}
bool Creat_DuL(DLinkList *&L,ElemType a[],int n)
{
DLinkList *s;
bool k=InitList_DuL(L);
if (!k)
return false;
for(int i=0;i<n;i++)
{
s=(DLinkList *)malloc(sizeof(DLinkList));
s->data=a[i];
s->next=L;
s->prior=L->prior;
L->prior->next=s;
L->prior=s;
}
return true;
}
bool Locate_DuL(DLinkList *L,ElemType e,DLinkList *&p)
{
p=L->prior;
while(p!=L && p->data!=e)
p=p->prior;
if(p==L)
return false;
else
return true;
}
void Insert_DuL(DLinkList *&L,DLinkList *p,ElemType e1,ElemType e2)
{
DLinkList *s;
s=(DLinkList *)malloc(sizeof(DLinkList));
s->data=e1;
s->next=p;
s->prior=p->prior;
p->prior->next=s;
p->prior=s;
s=(DLinkList *)malloc(sizeof(DLinkList));
s->data=e2;
s->next=p->next;
s->prior=p;
p->next->prior=s;
p->next=s;
}
void Delete_DuL(DLinkList *&L,DLinkList *p)
{
p->prior->next=p->next ;
p->next->prior=p->prior;
free(p);
}
bool symmetry(DLinkList *L)
{
DLinkList *p,*q;
p=L->next ;
q=L->prior ;
while(p!=q && p->prior!=q)
if(p->data==q->data)
{ p=p->next ;
q=q->prior ;
}
else
return false;
return true;
}
void main()
{
DLinkList *L,*p;
ElemType a[]={11,22,33,44,55,66};
bool b=Creat_DuL(L,a,6);
b=symmetry(L);
b=Locate_DuL(L,44,p);
Insert_DuL(L,p,100,200);
Delete_DuL(L,p);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -