#include<iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}Node;
typedef struct
{
Node *front;
Node *rear;
}Queue;
void InitQueue(Queue &Q)
{
Node *p = new Node;
p->next = NULL;
Q.rear = Q.front = p;
}
int EnQueue(Queue &Q, int e)
{
Node *p = new Node;
p->next = NULL;
p->data = e;
Q.rear->next = p;
Q.rear = p;
return 1;
}
int DeQueue(Queue &Q, int &e)
{
if(Q.front == Q.rear)
return 0;
Node *p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(p == Q.rear)//假若删除的是第一个也是最后一元素,就要修改尾指针
Q.rear = Q.front;
free(p);
p = NULL;
return 1;
}
int main()
{
const int N = 10;
int temp;
Queue Q;
InitQueue(Q);
for(int i=0;i<N;++i)
{
EnQueue(Q,i+1);
}
while(Q.front != Q.rear)
{
DeQueue(Q,temp);
cout<<temp<<endl;
}
return 0;
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}Node;
typedef struct
{
Node *front;
Node *rear;
}Queue;
void InitQueue(Queue &Q)
{
Node *p = new Node;
p->next = NULL;
Q.rear = Q.front = p;
}
int EnQueue(Queue &Q, int e)
{
Node *p = new Node;
p->next = NULL;
p->data = e;
Q.rear->next = p;
Q.rear = p;
return 1;
}
int DeQueue(Queue &Q, int &e)
{
if(Q.front == Q.rear)
return 0;
Node *p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(p == Q.rear)//假若删除的是第一个也是最后一元素,就要修改尾指针
Q.rear = Q.front;
free(p);
p = NULL;
return 1;
}
int main()
{
const int N = 10;
int temp;
Queue Q;
InitQueue(Q);
for(int i=0;i<N;++i)
{
EnQueue(Q,i+1);
}
while(Q.front != Q.rear)
{
DeQueue(Q,temp);
cout<<temp<<endl;
}
return 0;
}