#include <stdio.h>
#include <malloc.h>
#include <process.h>
#include <ctype.h>
#include <math.h>
#include <limits.h>
#include <io.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct DuLNode
{
ElemType data;
DuLNode *prior,*next;
}DuLNode,*DuLinkList;
void InitList(DuLinkList &L)
{//产生空的双向循环链表L
L=(DuLinkList)malloc(sizeof(DuLNode));
if(L)
L->next=L->prior=L;
else
exit(OVERFLOW);
}
void DestroyList(DuLinkList &L)
{
DuLinkList q,p=L->next;
while (p!=L)
{
q=p->next;
free(p);
p=q;
}
free(L);
L=NULL;
}
Status GetElem(DuLinkList L,int i,ElemType &e)
{
int j=1;//ji shu qi
DuLinkList p=L->next;
while(p!=L&&j<i)//顺指针向后查找,直到p指向第i个元素或p指向头结点
{
p=p->next;
j++;
}
if(p==L||j>i)//第i个元素不存在
return ERROR;
e=p->data;//qu 第i个元素
return OK;
}