单向队列-入队-出队-测长-删除-打印
#include <iostream>
using namespace std;
//队列的入队-出对-测长-打印
typedef struct node
{
int data;
struct node *next;
}node;
typedef struct _Queue
{
struct node* front;
struct node* rear;
}MyQueue;
//构造一个空队列
MyQueue *CreateMyQueue()
{
MyQueue *queue = (MyQueue*)malloc(sizeof(MyQueue));
queue->front =queue->rear = NULL;
return queue;
}
//入队
MyQueue *EnterQueue(MyQueue* queue,int data)
{
node *pnode = (node*)malloc(sizeof(node));
node *p;
pnode->data = data;
pnode->next = NULL;
if(queue->rear == NULL)
{
queue->front=queue->rear = pnode;
}
else
{
queue->rear->next =pnode;
queue->rear = pnode;
}
return queue;
}
//打印队列
void PrintQueue(MyQueue *queue)
{
MyQueue *q = queue;
node *pnode = queue->front;
if(q->rear==NULL)
{
printf("the queue is empty\n");
}
else
{
while(pnode!=NULL)
{
printf("the queue data:%d\n",pnode->data);
pnode = pnode->next;
}
}
}
//出队
MyQueue *OutQueue(MyQueue *queue)
{
node *pnode;
if(queue->rear==NULL)
{
return NULL;
}
else
{
pnode = queue->front;
queue->front = queue->front->next;
}
free(pnode);
return queue;
}
int main()
{
MyQueue *queue = CreateMyQueue();
for(int i=0;i<10;++i){
queue = EnterQueue(queue,i);
}
for(int j=0;j<8;++j)
queue = OutQueue(queue);
PrintQueue(queue);
return 0;
}
the queue data:8
the queue data:9