數據結構
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType element;
struct node* link;
}Node;
typedef struct queue
{
Node* front;
Node* rear;
}Queue;
void EnQueue(Queue *Q, ElemType x);
void DeQueue(Queue *Q);
void Initialize_Queue(Queue * pQ);
void traverse(Queue *pS);
int main()
{
Queue Q;
Initialize_Queue(&Q);
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
traverse(&Q);
DeQueue(&Q);
traverse(&Q);
DeQueue(&Q);
DeQueue(&Q);
traverse(&Q);
return 0;
}
void Initialize_Queue(Queue * pQ)
{
pQ->front = (Node *)malloc(sizeof(Node));
if(NULL == pQ->front)
{
printf("動態內存分配失敗!\n");
exit(-1);
}
else
{
pQ->rear = pQ->front;
pQ->front->link = NULL;
}
}
void EnQueue(Queue *Q, ElemType x)
{
Node* p= (Node*)malloc(sizeof(Node));
p->element = x;
p->link = NULL;
Q->rear->link=p;
Q->rear=p;
return ;
}
void DeQueue(Queue *Q)
{
if(Q->front->link ==NULL)
{
return ;
}
Node *p=Q->front->link;
Q->front->link=p->link;
free(p);
if(Q->front->link==NULL)
Q->rear=Q->front;
}
void traverse(Queue *Q)
{
Node * p = Q->front->link;
while(p != NULL)
{
printf("%d ",p->element);
p = p->link;
}
printf("\n");
return ;
運行示例:
————————————————
1 2 3
2 3
➜ Desktop
————————————————
}