隊列的實現

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

}

相關文章
相關標籤/搜索