面试题: 利用java代码实现一个简单的队列, 有一个队列类和测试类, 如整数1,2,3,4,5输入队列, 在控制台上打印输入1 2 3 4 5 ?
以下是我面试时写的一段代码, 但我没有实现输入的功能? 请高手指点或给出详细代码.
public class TestQueue { public static void main(String[] args) {
int[] num={1,2,3,4,5};
Queue q=new Queue();
q.queue(num);
}
}class Queue{
public void queue(int [] a){
for (int i=0;i<a.length;i++){
if (a!=null){
System.out.print(a[i]+" ");
}
}
}
}
以下是我面试时写的一段代码, 但我没有实现输入的功能? 请高手指点或给出详细代码.
public class TestQueue { public static void main(String[] args) {
int[] num={1,2,3,4,5};
Queue q=new Queue();
q.queue(num);
}
}class Queue{
public void queue(int [] a){
for (int i=0;i<a.length;i++){
if (a!=null){
System.out.print(a[i]+" ");
}
}
}
}
队列的话,是不是应该实现一个进队一个退队方法呢?用进队实现输入,输出中包含退队
以上是我看了你的问题以后的一些问题,可能想法有不对的地方。^^ 下面是我实现的一个类
class IntegerQueue{
public int[] integerQueue;//用来当队列
public int tail;//队尾
public int size;//队的长度,也可以设置一个默认值,溢出时从新申请
public IntegerQueue(int size){
integerQueue=new int[size];
this.size=size;
tail=0;
}
public void inQueue(int i){
if(tail<size){
this.integerQueue[tail]=i
tail++;
}else{
System.err.println("溢出啦!");
}
}
public int outQueue(){
int tmp;
if(tail>=0){
tmp=this.integerQueue[tail];
tail--;
reutrn tmp;
}else{
System.err.println("没东东啦!");
}
}
}
Java中有集合框架来实现,要自己实现的话,只要定义一个类实现Queue接口,并且实现相应的方法即可。
一般需要实现的方法:
E element()
检索,但是不移除此队列的头。
boolean offer(E o)
如果可能,将指定的元素插入此队列。
E peek()
检索,但是不移除此队列的头,如果此队列为空,则返回 null。
E poll()
检索并移除此队列的头,如果此队列为空,则返回 null。
E remove()
检索并移除此队列的头。 对于数组的数据结构,用Object[]数组来存放;
对于链表的数据结构,用内部类class Entry<E>{
E element;
Entry next;
Entry previous;
}来存放;
public static void main(String args[]) {
int[] k = {1,2,3,4,5};
getOutput(k);
}
public static void getOutput(int[] k) {
Queue queue = new LinkedList(); //ListedList implements Queue
for(int i = 0; i < k.length; i++) {
queue.offer(String.valueOf(k[i]));
System.out.print(queue.poll());
System.out.print(" ");
}
}
}
package test;
/**
* 队列规则:先进先出
* 插入一端为队尾,
* 删除一端为队头。
* @author GT
*/
public class integerQueue {
int Queuereat ;//队尾
int queueSize;//对长
public static void main(String[] args){
int que[] = {1,2,3,4};
enQueue(que);
}
public boolean queueEmpty(){//判断队列是否为空,空则返回true,否则返回false
if(queueEmpty()){
return true;
}else{
return false;
}
}
public static void enQueue(int q[]){//入队 向队列插入元素
for (int i= 0; i < q.length; i++) {
System.out.println(q[i]);
}
}
public void deQueue(){//出队 从队列删除元素
}
}
我迷茫不知所措!