609堆疊擴充

/******
檔名:JPA06_1.java
題目:TQC+ JAVA6物件導向程式設計 參考答案
時間:2015/06
作者:fang shi mai
******/
public class JPA06_1
{
    public static void main(String args[])
    {
        BoundedStack s = new BoundedStack(3);
        s.push("abc");
        s.push("def");
        s.push("ghi");
        s.push("jkl");

        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.empty());
    }
}
class BoundedStack
{
    String stack[];
    int top=-1;
    int size=0;

    BoundedStack(int a)
    {
        size=a;
        stack=new String[size];
    }
    void push(String a)
    {
        if(top>=size-1)
        {
            System.out.println("stack-overflow");
        }
        else
        {
            top++;
            stack[top]=a;
        }
    }
    String pop()
    {
        if(top<0)
        {
            return "stack-is-empty";
        }
        else
        {
            String temp=stack[top];
            top--;
            return temp;
        }
    }
    boolean empty()
    {
        if(size<=0)
        {
            return true;
        }
        else
        {
            return  false;
        }
    }
}
/******
檔名:JPA06_2.java
題目:TQC+ JAVA6物件導向程式設計 參考答案
時間:2015/06
作者:fang shi mai
******/
import java.util.LinkedList;

public class JPA06_2
{
    public static void main(String args[])
    {
        UnboundedStack s = new UnboundedStack();
        s.push("abc");
        s.push("def");
        s.push("ghi");
        s.push("jkl");

        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.empty());
        System.out.println(s.pop());
        System.out.println(s.empty());
    }
}
class UnboundedStack
{
    LinkedList<String> stack;

    UnboundedStack()
    {
        stack=new LinkedList<String>();
    }
    void push(String a)
    {
        stack.addFirst(a);
    }
    String pop()
    {
        if(stack.isEmpty())
        {
            return "stack is empty";
        }
        else
        {
            String temp=stack.getFirst();
            stack.removeFirst();

            return temp;
        }
    }
    boolean empty()
    {
        return stack.isEmpty();
    }
}
/******
檔名:JPA06_3.java
題目:TQC+ JAVA6物件導向程式設計 參考答案
時間:2015/06
作者:fang shi mai
******/
import java.util.LinkedList;

public class JPA06_3
{
    public static void main(String args[])
    {
        TraceUnboundedStack s2 = new TraceUnboundedStack();
        s2.push("abc");
        s2.push("def");
        s2.push("ghi");
        s2.push("jkl");
        System.out.println(s2.getSize());
        System.out.println(s2.top());
        System.out.println(s2.pop());
        System.out.println(s2.pop());
        System.out.println(s2.pop());
        System.out.println(s2.empty());
        System.out.println(s2.pop());
        System.out.println(s2.empty());
        System.out.println(s2.getSize());
    }
}
class TraceUnboundedStack extends UnboundedStack
{
    TraceUnboundedStack()
    {
        stack=new LinkedList<String>();
    }
    void push(String a)
    {
        System.out.println("Pushing:"+a);
        super.push(a);
    }
    String pop()
    {
        String temp=super.pop();
        System.out.println("Poping:"+temp);
        return temp;
    }
    boolean empty()
    {
        return super.empty();
    }
    int getSize()
    {
        return stack.size();
    }
}
abstract class Stack
{
    String top()
    {
        String temp=this.pop();
        this.push(temp);
        return temp;
    }
    abstract void push(String a);
    abstract String pop();
    abstract boolean empty();
}
class UnboundedStack extends Stack
{
    LinkedList<String> stack;

    UnboundedStack()
    {
        stack=new LinkedList<String>();
    }
    void push(String a)
    {
        stack.addFirst(a);
    }
    String pop()
    {
        if(stack.isEmpty())
        {
            return "stack is empty";
        }
        else
        {
            String temp=stack.getFirst();
            stack.removeFirst();

            return temp;
        }
    }
    boolean empty()
    {
        return stack.isEmpty();
    }
}
class BoundedStack extends Stack
{
    String stack[];
    int top=-1;
    int size=0;

    BoundedStack(int a)
    {
        size=a;
        stack=new String[size];
    }
    void push(String a)
    {
        if(top>=size-1)
        {
            System.out.println("stack-overflow");
        }
        else
        {
            top++;
            stack[top]=a;
        }
    }
    String pop()
    {
        if(top<0)
        {
            return "stack-is-empty";
        }
        else
        {
            String temp=stack[top];
            top--;
            return temp;
        }
    }
    boolean empty()
    {
        if(size<=0)
        {
            return true;
        }
        else
        {
            return  false;
        }
    }
}
/******
檔名:JPA06_4.java
題目:TQC+ JAVA6物件導向程式設計 參考答案
時間:2015/06
作者:fang shi mai
******/
import java.util.LinkedList;

public class JPA06_4
{
    public static void main(String args[])
    {
        UnboundedStack s = new UnboundedStack();
        s.push("abc");
        s.push(2);
        s.push("ghi");
        System.out.println(s.top());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
    }
}
abstract class Stack<T>
{
    T top()
    {
        T temp=this.pop();
        this.push(temp);
        return temp;
    }
    abstract void push(T a);
    abstract T pop();
    abstract boolean empty();
}
class UnboundedStack<T> extends Stack<T>
{
    LinkedList<T> stack;

    UnboundedStack()
    {
        stack=new LinkedList<T>();
    }
    void push(T a)
    {
        stack.addFirst(a);
    }
    T pop()
    {
        if(stack.isEmpty())
        {
            return null;
        }
        else
        {
            T temp=stack.getFirst();
            stack.removeFirst();

            return temp;
        }
    }
    boolean empty()
    {
        return stack.isEmpty();
    }
}
/******
檔名:JPA06_5.java
題目:TQC+ JAVA6物件導向程式設計 參考答案
時間:2015/06
作者:fang shi mai
******/
import java.util.LinkedList;

public class JPA06_5
{
    public static void main(String args[])
    {
        try
        {
            UnboundedStack s = new UnboundedStack();
            s.push("abc");
            s.push(2);
            s.push("ghi");
            System.out.println(s.top());
            System.out.println(s.pop());
            System.out.println(s.pop());
            System.out.println(s.pop());
            System.out.println(s.pop());
        }
        catch(NewException n)
        {
            System.out.println(n);
        }
    }
}
class NewException extends Exception
{
    String exc;

    NewException(String a)
    {
        exc=a;
    }
    public String toString()
    {
        return exc;
    }
}

abstract class Stack<T>
{
    T top()throws NewException
    {
        T temp=this.pop();
        this.push(temp);
        return temp;
    }
    abstract void push(T a);
    abstract T pop()throws NewException;
    abstract boolean empty();
}
class UnboundedStack<T> extends Stack<T>
{
    LinkedList<T> stack;

    UnboundedStack()
    {
        stack=new LinkedList<T>();
    }
    void push(T a)
    {
        stack.addFirst(a);
    }
    T pop()throws NewException
    {
        if(stack.isEmpty())
        {
            throw new NewException("stack is empty!");
        }
        else
        {
            T temp=stack.getFirst();
            stack.removeFirst();

            return temp;
        }
    }
    boolean empty()
    {
        return stack.isEmpty();
    }
}

沒有留言:

張貼留言