#include<stdio.h>java
#include<stdlib.h>数组
#define max 10指针
//咱们采用循环队列来实现,经过少用一个数组的空间来判断队列是否满code
typedef int elementType;队列
typedef struct Seq_queue{element
int rear; int front; elementType data[max];
} Queue;it
//初始化队列io
void init(Queue *queue){class
queue->rear=0; queue->front=0; printf("初始化成功\n");
}循环
//入队列 void push_queue(Queue *queue,elementType x){
int temp = (queue->rear+1)%max;
if(temp==(queue->front)){
printf("队列满了\n"); return;
}
printf("%d %d\n",temp,queue->front);
queue->data[queue->rear]=x;
queue->rear=temp;
return;
}
void pop_queue(Queue *queue){
int temp = (queue->front+1)%max; //队尾指针等于队头指针,队列为空 if(queue->front==queue->rear){ printf("栈已经空了\n"); return; } printf("%d\n",queue->data[queue->front]); queue->front=temp; return;
}
int main(){
Queue q; init(&q); for(int i=0;i<21;i++) push_queue(&q,i+1); for(int i=0;i<21;i++) pop_queue(&q); return 0;
}
java实现
//使用循环队列,浪费一个存储空间来判断
public class seq_queue {
int default_size = 10; int data[]; int front; int rear; //默认的数组长度 public seq_queue(){ rear=0; front=0; data =new int[default_size]; } //给一个数组的长度 public seq_queue(int size){ rear=0; front=0; default_size =size; data = new int[default_size]; } //入队列 public void push_queue(int x){ int temp = (rear+1)%default_size; if(temp==front){ System.out.println("队列满了\n"); return; } data[rear]=x; System.out.println("rear:"+data[rear]); rear=temp; } //出队列 public void pop_queue(){ int temp = (front+1)%default_size; if(rear==front){ System.out.println("队列已经空了\n"); return; } System.out.println("出队列:"+data[front]); front=temp ; } public static void main(String[] args) { seq_queue queue = new seq_queue(); for(int i=0;i<10;i++){ queue.push_queue(i+1); } for(int i=0;i<10;i++){ queue.pop_queue(); } }
}