Java 队列数据的输出

Java 队列数据的输出,java,queue,Java,Queue,当我学习排队时,我发现了一些问题,这是我的代码和结果。希望有人能帮助我解决问题,谢谢! 导入java.util.Scanner public class Test{ public static void main(String[] args){ SQType sq = new SQType(); Data data1; Scanner in = new Scanner(System.in); SQType s = sq.SQ

当我学习排队时,我发现了一些问题,这是我的代码和结果。希望有人能帮助我解决问题,谢谢! 导入java.util.Scanner

public class Test{
    public static void main(String[] args){
        SQType sq = new SQType();
        Data data1;
        Scanner in = new Scanner(System.in);
        SQType s = sq.SQInit();                         //初始化队列

        System.out.println("入队列操作:");
        System.out.println("输入姓名 年龄进行操作:");
        do{
            Data data = new Data();
            data.name = in.next();
            data.age = in.nextInt();
            if(data.name.equals("0")){
                break;
            }
            else{
                sq.InSQType(s,data);
            }
        }while(true);

        String temp;
        System.out.println("出队列操作,按任意非0键继续:");
        temp = in.next();
        while(!temp.equals("0")){
            data1 = sq.OutSQType(s);
            System.out.printf("出队列的数据为(%s %d)",data1.name, data1.age);
            temp = in.next();
        }

        System.out.println("测试结束!");
        sq.SQTypeFree(s);
    }
}

class Data{
    String name;
    int age;
}

class SQType{
    private static final int QUEUELEN = 15;
    private Data[] data = new Data[QUEUELEN];
    private int head;
    private int tail;

    SQType SQInit(){
        SQType s;
        if((s = new SQType()) != null){                 //申请内存
            s.head = 0;                                 //设置队头
            s.tail = 0;                                 //设置队尾
            return s;
        }
        else{
            return null;
        }
    }

    int SQTypeIsEmpty(SQType s){                        //判断是否为空队列
        int temp = 0;
        if(s.head == s.tail){
            temp = 1;
        }
        return temp;
    }

    int SQTypeIsFull(SQType s){                         //判断是否为满队列
        int temp = 0;
        if(s.tail == QUEUELEN){
            temp = 1;
        }
        return temp;
    }

    void SQTypeClear(SQType s){                         //清空队列
        s.head = 0;
        s.tail = 0;
    }

    void SQTypeFree(SQType s){
        if(s != null){
            s = null;
        }
    }

    int InSQType(SQType s, Data data){                  //数据入队列
        if(s.tail == QUEUELEN){
            System.out.println("队列已满!操作失败!");
            return 0;
        }
        else{
            s.data[s.tail++] = data;
            return 1;
        }
    }

    Data OutSQType(SQType s){                           //数据出队列
        if(s.head == 0){
            System.out.println("队列为空!操作失败!");
            return null;
        }
        else {
            return s.data[s.head++];
        }
    }

    Data PeekSQType(SQType s){                          //读取队列数据
        if(SQTypeIsEmpty(s) == 1){
            System.out.println("空队列!");
            return null;
        }
        else{
            return s.data[s.head];
        }
    }

    int SQTypeLen(SQType s){                            //计算队列长度
        int temp;
        temp = s.tail - s.head;
        return temp;
    }
}
结果是,队列可以读取数据,但不能输出数据

在OutSQType中,if语句中的代码应更改为“s.head==s.tail”,否则它将始终返回null

可能的重复项您能将代码作为文本而不是这些图像放在问题中吗?