队列(Queue)
来源:互联网 发布:app store推荐软件 编辑:程序博客网 时间:2024/06/05 02:04
#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);
}
阅读全文
0 0
- STL--queue(队列)
- 队列(Queue)
- 数据结构-队列(queue)
- C# 队列(Queue)
- STL - queue(队列)
- 队列(Queue)
- C#队列(Queue)
- C# 队列(Queue)
- 队列(Queue)
- 队列(queue)数据结构
- 队列(Queue)
- 队列(queue)原理
- 队列(queue)
- 队列(Queue)
- 队列(Queue)
- 顺序队列(Queue)
- 队列(queue)
- 队列(Queue)
- tomcat 出错卡死
- 机器学习:R包与python的sklearn库中默认决策树模型的区别
- ajax 前台后台传输数据
- 最大字段和问题
- Linux LVM是linux逻辑卷理解
- 队列(Queue)
- poj 2226 Muddy Fields(二分图最大匹配)
- 出现:clang: error: linker command failed with exit code 1 (use -v to see invocation),解决方法
- ELK安装
- bzoj 4991 [Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组套Treap
- java中instanceof用法
- PAT
- curl 常用命令--待更新
- krpano调用网页js函数