说明:
循环队列与顺序队列十分相似,对其中部分内容稍作修改即可。
代码如下:
public class myqueue {
private static final int Maxsize = 100 ;
static class SqQueue {
int front, rear;
int[ ] queue;
}
public static boolean initQueue ( SqQueue a) {
a. queue = new int [ Maxsize] ;
if ( a. queue == null ) {
return false ;
}
a. front = 0 ;
a. rear = 0 ;
return true ;
}
public static boolean enQueue ( SqQueue a, int e) {
if ( ( a. rear+ 1 ) % Maxsize == a. front) {
return false ;
}
a. queue[ a. rear++ ] = e;
System. out. println ( a. rear) ;
return true ;
}
public static int deQueue ( SqQueue a) {
if ( a. front == a. rear) {
return - 1 ;
}
int e = a. queue[ a. front] ;
a. queue[ a. front++ ] = 0 ;
return e;
}
public static int countQueue ( SqQueue a) {
System. out. println ( a. rear) ;
return ( a. rear - a. front + Maxsize) % Maxsize;
}
public static int getHead ( SqQueue a) {
if ( a. front!= a. rear) {
return a. queue[ a. front] ;
}
return - 1 ;
}
public static void main ( String[ ] args) {
myqueue a= new myqueue ( ) ;
SqQueue q= new SqQueue ( ) ;
int n= 0 , x;
a. initQueue ( q) ;
System. out. println ( "请输入元素个数n:" ) ;
Scanner scanner= new Scanner ( System. in ) ;
n= scanner. nextInt ( ) ;
System. out. println ( "请依次输入n个整型数,依次顺序入队:" ) ;
while ( n-- > 0 ) {
x= scanner. nextInt ( ) ;
a. enQueue ( q, x) ;
}
System. out. println ( ) ;
System. out. println ( "顺序队列内元素个数,即长度:" + a. countQueue ( q) ) ;
System. out. println ( "顺序队头元素:" + a. getHead ( q) ) ;
System. out. println ( "元素依次出队:" ) ;
while ( true ) {
x= a. deQueue ( q) ;
if ( x!= - 1 )
System. out. print ( x+ "\t" ) ;
else
break ;
}
System. out. println ( ) ;
System. out. println ( "顺序队列内元素个数,即长度:" + a. countQueue ( q) ) ;
}
}
初学数据结构,如有错误望指正。