数据结构——队列的链表实现
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int Element;
struct Node* Next;
}Node;
typedef struct Queue
{
Node* Front;
Node* Rear;
}Queue;
Queue* CreateQueue()
{
Queue* q;
q = (Queue*)malloc(sizeof(Queue));
if (q == NULL)
printf("分配内存空间失败!");
q->Front = NULL;
return q;
}
Queue* Enqueue(int X, Queue* q)
{
Node* n;
n = (Node*)malloc(sizeof(Node));
n->Element = X;
n->Next = NULL;
if (q->Front == NULL)
{
q->Front = n;
q->Rear = n;
}
else
{
q->Rear->Next = n;
q->Rear = n;
}
return q;
}
Queue* Dequeue(Queue* q)
{
if (q->Front == NULL)
printf("该队列为空!");
if (q->Front == q->Rear)
{
q->Front = NULL;
q->Rear = NULL;
}
else
q->Front = q->Front->Next;
return q;
}
void Display(Queue* q)
{
Node* n;
n = q->Front;
if(n==NULL)
printf("该队列为空!");
while (n != NULL)
{
printf("%d", n->Element);
n = n->Next;
}
printf("\n");
}
int main()
{
Queue* q;
int i;
q = CreateQueue();
for (i = 1; i < 10; i++)
{
q = Enqueue(i, q);
Display(q);
}
q = Dequeue(q);
Display(q);
}