struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;// why is it
typedef PtrToNode Position;
List MakeEmpty( List L );
int Islast( Position P, List L );
int IsEmpty( List L );
void Delete( List L, ElementType X );
Position Find( ElementType X, List L );
Position FindPrevious( ElementType X, List L );
void Insert( ElementType X, Position P, List L );
void DeleteList( List L );
Position Header( List L );
Position First( List L );
Position Advance( Position P );
ElementType Retrieve( Position P );
#endif /* _List_H */
struct Node
{
ElementType Element;
Position Next;
};
int
IsEmpty( List L )
{
return L->Next == NULL;
}
int
IsLast( Position P, List L )
{
return P->Next == NULL;
}
Position
Find( ElementType X, List L )
{
Position P;
P = L->Next;
while( P != NULL && P->Element != X )
P = P->Next;
return P;
}
void
Delete( Element 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( ElementType X, List L )
{
Position P;
while( P->Next != NULL && P->Next->Element != X )
P = P->Next;
return P;
}
void
Insert( ElementType X, List L, Position P )
{
Position TmpCell;
TmpCell = malloc( sizeof( struct Node ) );
TmpCell->Element = X;
TmpCell->Next = P->Next;
P->Next = TmpCell;
}
加油!