#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(); } }
}