📄 dllist.h
字号:
typedef struct
{DNode *front,*currptr;
int size;
}DLList;
void SetDLList(DLList *L);
void FreeDLList(DLList *L);
int DLListSize(DLList *L);
int DLListEmpty(DLList *L);
int DLListLocate(DLList *L,DataType item);
DataType DLListGetData(DLList *L,int pos);
void DLListSetData(DLList *L,DataType item,int pos);
void DLListDelete(DLList *L,int pos);
void ClearDLList(DLList *L);
void DLListInsertR(DLList *L,DataType item,int pos);
void SetDLList(DLList *L)
{L->front=(DNode *)malloc(sizeof(DNode));
if(L->front==NULL)
{printf("overflow");
exit(1);
}
SetDNode(L->front);
L->currptr=L->front;
L->size=0;
}
void FreeDLList(DLList *L)
{while(NextDNodeRight(L->front)!=L->front)
DeleteDNode(NextDNodeRight(L->front));
free(L->front);
}
int DLListSize(DLList *L)
{return(L->size);
}
int DLListEmpty(DLList *L)
{if(L->size==0)
return(1);
return(0);
}
int DLListLocate(DLList *L,DataType item)
{int i;
DNode *ptr;
ptr=NextDNodeRight(L->front);
for(i=0;ptr!=L->front;i++)
{if((item.x==ptr->data.x)&&(item.y==ptr->data.y))
return(i);
ptr=NextDNodeRight(ptr);
}
return(-1);
}
DataType DLListGetData(DLList *L,int pos)
{int i;
DNode *ptr;
if(pos<0||pos>L->size-1)
{printf("Pos is out of range!\n");
exit(1);
}
ptr=NextDNodeRight(L->front);
for(i=0;i<pos;i++)
ptr=NextDNodeRight(ptr);
return(ptr->data);
}
void DLListSetData(DLList *L,DataType item,int pos)
{
int i;
DNode *ptr;
if(pos<0||pos>L->size-1)
{printf("Pos in Delete is illegal");
exit(1);
}
ptr=NextDNodeRight(L->front);
i=0;
while(i<pos)
{
i++;
ptr=NextDNodeRight(ptr);
}
ptr->data=item;
}
void DLListDelete(DLList *L,int pos)
{int i;
DNode *ptr,*p;
if(pos<0||pos>L->size-1)
{printf("Pos in Delete is illegal");
exit(1);
}
ptr=L->front;p=NextDNodeRight(ptr);
i=0;
while(i<pos)
{
i++;
ptr=p;p=NextDNodeRight(ptr);
}
DeleteDNode(p);
L->size--;
}
void ClearDLList(DLList *L)
{while(NextDNodeRight(L->front)!=L->front)
DeleteDNode(NextDNodeRight(L->front));
L->currptr=L->front;
L->size=0;
}
void DLListInsertR(DLList *L,DataType item,int pos)
{
int i;
DNode *ptr,*p;
if(pos<0||pos>L->size)
{printf("Pos in Insert is illegal\n");
exit(1);
}
i=0;
ptr=L->front;p=NextDNodeRight(ptr);
while(i<pos)
{
i++;
ptr=p;p=NextDNodeRight(ptr);
}
InsertRight(ptr,item);
L->size++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -