📄 queue.cpp
字号:
#include "stdlib.h"
#include <iostream>
#include <iomanip>
using namespace std;
#define MaxSize 16
typedef int ElemType;
typedef struct
{ ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
bool EnQueue(SqQueue *&q,ElemType e)
{
if (q->rear+1==q->front)
return false;
q->rear=(q->rear+1) % MaxSize;
q->data[q->rear]=e;
return true;
}
bool DelQueue(SqQueue *&q,ElemType &e)
{ if (q->front==q->rear)
return false;
q->front=(q->front+1) % MaxSize;
e=q->data[q->front];
return true;
}
bool GetHead(SqQueue *&q,ElemType &e)
{
if (q->front==q->rear)
return false;
e=q->data[(q->front+1)% MaxSize];
return true;
}
typedef struct qnode
{ ElemType data;
struct qnode *next;
}QNode;
typedef struct
{ QNode *front,*rear;
}LiQueue;
void InitQueue_L(LiQueue *&q)
{
q=(LiQueue *)malloc(sizeof(LiQueue));
q->rear=q->front=NULL;
}
void EnQueue_L(LiQueue *&q,ElemType e)
{
QNode *s;
s=(QNode *)malloc(sizeof(QNode));
s->data=e;
s->next=NULL;
if(q->rear==NULL)
q->front=q->rear=s;
else
{q->rear->next=s;
q->rear=s;
}
}
bool DelQueue_L(LiQueue *&q,ElemType &e)
{ QNode *t;
if(q->rear==NULL)
return false;
t=q->front;
q->front=t->next;
if(q->rear==t)
q->rear=q->front=NULL;
e=t->data;
free(t);
return true;
}
void main()
{ SqQueue *q;
LiQueue *q1;
ElemType e,x,y;
bool k;
InitQueue_L(q1);
EnQueue_L(q1,100);
EnQueue_L(q1,200);
EnQueue_L(q1,300);
k=DelQueue_L(q1,e);
k=DelQueue_L(q1,e);
InitQueue(q);
k=EnQueue(q,0);
k=EnQueue(q,1);
k=EnQueue(q,1);
k=EnQueue(q,0);
cout <<endl<<setw(40)<<' '<<'1'<<endl;
int col=35;
for(int i=2;i<10;i++)
{ col=col-2;
cout<<setw(col)<<' ';
for(int j=1;j<=i+1;j++)
{ k=DelQueue(q,x);
k=GetHead(q,y);
cout<<setw(4)<<x+y;
k=EnQueue(q,x+y);
}
cout<<endl;
k=EnQueue(q,0);
}
e=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -