wool王 发表于 2005-12-11 22:55

[原创]数据结构学习笔记之二:栈

节点类:


package stack;


public class Node {

        Object element;
        Node next;
       
        Node(Object o)
        {
                this(o,null);
        }
       
        Node(Object o,Node n)
        {
                element=o;
                next=n;
        }
}


栈类:


package stack;


public class Stack {

        private Node topNode;
        Stack()
        {
                topNode=null;
        }
       
        /**
       * 检查栈是否满。非数组表示的栈,永远不会满
       * @return
       */
        public boolean isFull()
        {
                return false;
        }
       
        /**
       * 检查栈是否为空
       * @return
       */
        public boolean isEmpty()
        {
                return topNode==null;
        }
       
        /**
       * 清空栈
       *
       */
        public void makeEmpty()
        {
                topNode=null;
        }
       
        /**
       * 压入栈
       * @param n 目标节点
       */
        public void push(Node n)
        {
                n.next=topNode;
                topNode=n;
        }
       
        /**
       * 压入栈
       * @param o 目标对象
       */
        public void push(Object o)
        {
                push(new Node(o));
        }
       
        /**
       * 获取栈顶节点
       * @return
       */
        public Node top()
        {
                return topNode;
        }
       
        /**
       * 获取栈顶对象
       * @return
       */
        public Object topObject()
        {
                return topNode.element;
        }
       
        /**
       * 删除栈顶
       *
       */
        public void pop()
        {
                topNode=topNode.next;
        }
       
        /**
       * 获取栈顶并删除栈顶
       * @return
       */
        public Node topAndPop()
        {
                Node tempNode=topNode;
                pop();
                return tempNode;
        }
}


测试类:


package stack;


public class Test {

        public static void main(String[] args) {
                Stack stack = new Stack();
                String a[]={"abc","222","333","444"};
               
                for(int i=0;i<a.length;i++)
                        stack.push(a);
               
                /*遍历栈*/
                while(!stack.isEmpty())
                {
                        System.out.println(stack.topObject().toString());
                        stack.pop();
                }
        }
}



[ Last edited by wool王 on 2005-12-11 at 15:08 ]

wool王 发表于 2005-12-11 23:08

测试运行结果:

444
333
222
abc

hjack 发表于 2005-12-12 16:39

用户名: hjack [退出登录]
作者: wool王
评分: 积分 12 点
标题: [原创]数据结构学习笔记之二:栈


不错,加个分给你.
页: [1]
查看完整版本: [原创]数据结构学习笔记之二:栈