#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <iomanip>
#include <algorithm>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
struct Node{
int data;
Node *next;
};
struct Queue{
Node *head,*rear;
};
Queue *creatQueue()
{
Queue *Q = new Queue;
Node *node = (Node*)malloc(sizeof(Node));
node->next=NULL;
Q->head = Q->rear = node;
return Q;
}
void InsertQueue(Queue *Q,int n)
{
Node *node = (Node*)malloc(sizeof(Node));
node->data = n;
node->next = NULL;
Q->rear->next = node;
Q->rear = node;
}
int deleteQueue(Queue *Q)
{
int data;
if(Q->rear==Q->head){
return ERROR;
}
Node *node=Q->head->next;
data = node->data;
Q->head->next = node->next;
if(node->next==NULL){
Q->rear = Q->head;
}
free(node);
return data;
}
void printQueue(Queue *Q)
{
Node *node=Q->head->next;
puts("Queue: ");
while(node!=NULL){
printf("%d ",node->data);
node=node->next;
}
putchar('\n');
}
void destroyQueue(Queue *Q)
{
Node *node;
while(Q->head){
node=Q->head->next;
free(Q->head);
Q->head=node;
}
free(Q);
}
int main()
{
int d, run = 1;
Queue *Q = creatQueue();
while(run) {
printQueue(Q);
puts("1:入队 2:出队 3:退出\n请输入操作号:");
scanf("%d", &d);
switch(d) {
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
InsertQueue(Q, d);
break;
case 2:
printf("%d 出队\n", deleteQueue(Q));
break;
case 3:
run = 0;
break;
default:
puts("输入错误!\n");
}
}
destroyQueue(Q);
}
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <iomanip>
#include <algorithm>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
struct Node{
int data;
Node *next;
};
struct Queue{
Node *head,*rear;
};
Queue *creatQueue()
{
Queue *Q = new Queue;
Node *node = (Node*)malloc(sizeof(Node));
node->next=NULL;
Q->head = Q->rear = node;
return Q;
}
void InsertQueue(Queue *Q,int n)
{
Node *node = (Node*)malloc(sizeof(Node));
node->data = n;
node->next = NULL;
Q->rear->next = node;
Q->rear = node;
}
int deleteQueue(Queue *Q)
{
int data;
if(Q->rear==Q->head){
return ERROR;
}
Node *node=Q->head->next;
data = node->data;
Q->head->next = node->next;
if(node->next==NULL){
Q->rear = Q->head;
}
free(node);
return data;
}
void printQueue(Queue *Q)
{
Node *node=Q->head->next;
puts("Queue: ");
while(node!=NULL){
printf("%d ",node->data);
node=node->next;
}
putchar('\n');
}
void destroyQueue(Queue *Q)
{
Node *node;
while(Q->head){
node=Q->head->next;
free(Q->head);
Q->head=node;
}
free(Q);
}
int main()
{
int d, run = 1;
Queue *Q = creatQueue();
while(run) {
printQueue(Q);
puts("1:入队 2:出队 3:退出\n请输入操作号:");
scanf("%d", &d);
switch(d) {
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
InsertQueue(Q, d);
break;
case 2:
printf("%d 出队\n", deleteQueue(Q));
break;
case 3:
run = 0;
break;
default:
puts("输入错误!\n");
}
}
destroyQueue(Q);
}