队列的基本操作
来源:互联网 发布:js中遍历dom元素 编辑:程序博客网 时间:2024/05/21 22:32
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 50
#define ElemType int
typedef struct{
ElemType data[MAXSIZE];
int front;
int rear;
}SqQueue; //队列的顺序存储
//队列初始化
void Init_Queue(SqQueue&Q)
{
Q.front=Q.rear=0;
}
//队列判空
bool Empty_Queue(SqQueue Q)
{
if(Q.front==Q.rear)
{
return true;
}
else
{
return false;
}
}
//入队操作(循环队列)
bool En_Queue(SqQueue&Q,ElemType x)
{
if((Q.rear+1)%MAXSIZE==Q.front) //从队尾入队
{
return false;
}
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%MAXSIZE;
return true;
}
//出队操作
bool De_Queue(SqQueue&Q,ElemType&x)
{
if(Q.rear==Q.front) //队空
{
return false;
}
x=Q.data[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
return true;
}
//队列的链式结构
typedef struct{ //链式队列结点
ElemType data;
struct LinkNode *next;
}LinkNode;
typedef struct{ //链式队列
LinkNode *front,*rear; //队列的队头和队尾
}LinkQueue;
//初始化
void Init_LinkQueue(LinkQueue&Q)
{
Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
Q.front->next=NULL;
}
//判队空
bool Empty_LinkQueue(LinkQueue Q)
{
if(Q.front==Q.rear)
{
return true;
}
else
{
return false;
}
}
//入队
void EnQueue(LinkQueue &Q,ElemType x)
{
LinkNode*s;
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q.rear->next=s->next;
Q.rear=s;
}
//出队
bool DeQueue(LinkQueue &Q,ElemType &x)
{
LinkNode*p;
if(Q.front==Q.rear)
{
return false;
}
p->next=Q.front->next;
x=p->data;
Q.front->next=p->next;
if(Q.rear==p)
{
Q.rear=Q.front;
free(p);
return true;
}
}
#include<malloc.h>
#define MAXSIZE 50
#define ElemType int
typedef struct{
ElemType data[MAXSIZE];
int front;
int rear;
}SqQueue; //队列的顺序存储
//队列初始化
void Init_Queue(SqQueue&Q)
{
Q.front=Q.rear=0;
}
//队列判空
bool Empty_Queue(SqQueue Q)
{
if(Q.front==Q.rear)
{
return true;
}
else
{
return false;
}
}
//入队操作(循环队列)
bool En_Queue(SqQueue&Q,ElemType x)
{
if((Q.rear+1)%MAXSIZE==Q.front) //从队尾入队
{
return false;
}
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%MAXSIZE;
return true;
}
//出队操作
bool De_Queue(SqQueue&Q,ElemType&x)
{
if(Q.rear==Q.front) //队空
{
return false;
}
x=Q.data[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
return true;
}
//队列的链式结构
typedef struct{ //链式队列结点
ElemType data;
struct LinkNode *next;
}LinkNode;
typedef struct{ //链式队列
LinkNode *front,*rear; //队列的队头和队尾
}LinkQueue;
//初始化
void Init_LinkQueue(LinkQueue&Q)
{
Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
Q.front->next=NULL;
}
//判队空
bool Empty_LinkQueue(LinkQueue Q)
{
if(Q.front==Q.rear)
{
return true;
}
else
{
return false;
}
}
//入队
void EnQueue(LinkQueue &Q,ElemType x)
{
LinkNode*s;
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q.rear->next=s->next;
Q.rear=s;
}
//出队
bool DeQueue(LinkQueue &Q,ElemType &x)
{
LinkNode*p;
if(Q.front==Q.rear)
{
return false;
}
p->next=Q.front->next;
x=p->data;
Q.front->next=p->next;
if(Q.rear==p)
{
Q.rear=Q.front;
free(p);
return true;
}
}
0 0
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作!
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- [2]Core Dump调试应用程序
- KiCad设计PCB-37-按键及其他几个引脚的布线
- 1043. Is It a Binary Search Tree
- 汇编语言学习笔记(可持续补充)
- swift type casting
- 队列的基本操作
- bzoj1604:奶牛的邻居(treap)
- [AHK]进制转换
- Linux--常用脚本
- 【Struts2学习】 (2) Struts2开发HelloWorld实例
- Xilinx FPGA中SRL(移位寄存器)资源
- 【PAT】1085. Perfect Sequence
- Note7燃损原因排查结束 确由电池引起
- 洛谷 P1101 单词方阵