//链表做队列
/* assume a header */
struct Node;
struct Queue;
typedef struct Node * PtrToNode;
typedef struct Queue * PtrToQ;
struct Node{
ElementType ele;
PtrToNode Next;
};
struct Queue{
PtrToNode rear;
PtrToNode front;
};
PtrToQ
CreateQ( void )
{
PtrToQ Q;
Q = malloc( sizeof( struct Queue ) );
Q->rear = Q->frOnt= malloc( sizeof( struct Node ) );
Q->rear->next = NULL;
}
void
AddQ( ElementType X, PtrToQ Q )
{
PtrToNode TmpCell;
Tmpcell = malloc( sizeof( struct Node ) );
TmpCell->ele = X;
TmpCell->Next = NULL;
Q->rear->Next = TmpCell;
Q->rear = TmpCell;
}
Elementtype
DeleteQ( PtrToQ Q )
{
ElementType res;
PtrToNode TmpCell;
TmpCell = Q->front->Next;
Q->front->Next = TmpCell->Next;
res = Tmpcell->ele;
free( TmpCell );
return res;
}