struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
List MakeEmpty(List L);
int IsEmpty(List L);
int IsLast(Position P,List L);
Position Find(ELEMENT_TYPE X,List L);
void Delete(ELEMENT_TYPE X,List L);
Position FindPrevious(ELEMENT_TYPE X,List L);
void Insert(ELEMENT_TYPE X,List L,Position P);
void DeleteList(List L);
Position Header(List L);
Position First(List L);
Position Advance(Position P);
ELEMENT_TYPE Retrieve(Position P);
struct Node
{
ELEMENT_TYPE Element;
Position Next;
};
int IsEmpty( List L )
{
return L->Next==NULL;
}
int IsLast( Position P,List L )
{
return P->Next==NULL;
}
Position Find( ELEMENT_TYPE X,List L )
{
Position P;
P=L->Next;
while(P!=NULL&&P->Element!=X)
P=P->Next;
return P;
}
void Delete( ELEMENT_TYPE X,List L )
{
Position p,TmpCell;
p=FindPrevious(X,L);
if (!IsLast(p,L))
{
TmpCell=p->Next;
p->Next=TmpCell->Next;
free(TmpCell);
}
}
Position FindPrevious( ELEMENT_TYPE X,List L )
{
Position P;
P=L;
while(P->Next!=NULL&&P->Next->Element!=X)
P=P->Next;
return P;
}
void Insert( ELEMENT_TYPE X,List L,Position P )
{
Position TmpCell;
TmpCell=malloc(sizeof(struct Node));
if(TmpCell==NULL)
Error("Out of space");
TmpCell->Element=X;
TmpCell->Next=P->Next;
P->Next=TmpCell;
}
void DeleteList( List L )
{
Position P,Temp;
P=L->Next;
L->Next=NULL;
while (P!=NULL)
{
Temp=P->Next;
free(P);
P=Temp;
}
}
LinkedList
最新推荐文章于 2025-07-31 08:18:26 发布