顺序队列
#include <stdio.h>
#include <stdlib.h> //动态内存分配的头文件
#include <stdbool.h> //bool型变量的头文件
#define maxsize 10 //定义队列的最大长度为10
typedef struct SqQueue //定义一个顺序队列
{
int data[maxsize]; //数据域
int front; //头指针
int rear; //尾指针
}SqQueue;
bool Init_SqQueue(SqQueue *Q) //初始化顺序队列
{
Q->front = Q->rear = 0;
return true;
}
bool Enqueue(SqQueue *Q) //入队
{
if((Q->rear - Q->front) >= maxsize)
{
return false;
}
else
{
printf("请依次输入要入栈的元素(按Ctrl+Z结束输入)");
int data;
while(scanf("%d",&data))
{
Q->data[Q->rear] = data;
++(Q->rear);
}
return true;
}
}
bool Dequeue(SqQueue *Q,int n) //出队n个元素
{
if(n > (Q->rear - Q->front))
{
return false;
}
else
{
printf("弹出的元素为:");
while(n--)
{
printf("%d ",Q->data[(Q->front)++]);
}
printf("\n");
return true;
}
}
void Print(SqQueue Q) //打印队列中元素
{
printf("从队头到队尾,队列中的元素为:");
for(;Q.front < Q.rear;)
{
printf("%d ",Q.data[(Q.front)++]);
}
printf("\n");
}
int main()
{
SqQueue Q;
Init_SqQueue(&Q);
Enqueue(&Q);
Print(Q);
Dequeue(&Q,3);
Print(Q);
return 0;
}
链队列