1. 程式人生 > >java資料結構佇列操作一覽

java資料結構佇列操作一覽

package 演算法.佇列;

import java.util.Scanner;

class Data
        {
          String name;
          int age;
        }


        class SQtype
        {
            static  final int Queuelen=15;
            Data data[]=new Data[Queuelen];
            int head;//隊首
            int tail;//隊尾

            //初始化
            SQtype SQInt()
            {
               SQtype q;
               if ((q=new  SQtype())!=null)
               {
                 q.head=0;
                 q.tail=0;
                 return q;
               }
               else {
                   return null;
               }
            }


            //判斷空佇列
            int SQTypeIsEmpty(SQtype q)
            {
                int temp=0;
                if (q.head==q.tail)
                    temp=1;
                    return (temp);
            }


            //判斷滿佇列
            int SQTypeIsFull(SQtype q)
            {
                int temp=0;
                if (q.tail==Queuelen)
                    temp=1;
                return temp;
            }


            //清空佇列
            void SQTypeClear(SQtype q)
            {
                q.head=0;
                q.tail=0;
            }


            //釋放空間
            void SQTyprFree(SQtype q)
            {
                if (q!=null){
                    q=null;
                }
            }


            //入佇列
            int SQTyprAdd(SQtype q,Data data)
            {
                if (q.tail==Queuelen)
                {
                    System.out.println("佇列已滿");
                    return 0;
                }
                else {
                    q.data[++q.tail]=data;
                    return 1;
                }
            }

            //出佇列
            Data SQTypeout(SQtype q)
            {
                if (q.head==q.tail)
                {
                    System.out.println("佇列為空,無法進行出佇列");
                    System.exit(0);
                }
                else {
                    return q.data[q.head++];
                }
                return null;
            }

            //計算佇列長度
            int SQTypelen(SQtype q)
            {
                int temp=0;
                temp=q.tail-q.head;
                return temp;
            }

            //顯示佇列結點
            Data SQShow(SQtype q)
            {
                if (SQTypeIsEmpty(q)==1)
                {
                    System.out.println("這是一個空佇列");
                    return null ;
                }
                else {
                    return q.data[q.head];
                }
            }
        }


public class duilie {
    public static void main(String[] args) {
        SQtype st=new SQtype();
        Data data1;

        Scanner input=new Scanner(System.in);
        SQtype stack=st.SQInt();//初始化

        System.out.println("佇列入隊操作");
        System.out.println("請輸入佇列姓名年齡");

        do {
            Data data=new Data();
            data.name=input.next();
            data.age=input.nextInt();
            if (data.name.equals("0"))
            {
                break;
            }
            else
            {
                st.SQTyprAdd(stack,data);
            }
        }while (true);

        String temp="1";
        System.out.println("輸入非零字元進行出佇列");
        temp=input.next();
        while (!temp.equals("0"))
        {
            data1=st.SQShow(stack);
            System.out.println("出佇列資料為"+data1.name+" "+data1.age);
            temp=input.next();
        }
        System.out.println("測試結束");
        st.SQTyprFree(stack);

    }
}