zoukankan      html  css  js  c++  java
  • 堆栈

     顺序栈:

    定义一个接口:IStack<E>

    public interface IStack<E> {
        E push(E item);
        E pop();
        E peek();
        int size();
        boolean empty();
         
    }

    定义一个SeqStack<E>类实现栈的抽象数据类型类

    public class SeqStack<E> implements IStack<E> {
        
        private int maxsize;
        private E[] data;
        private int top;
        
        //初始化栈
        
        public SeqStack(Class<E> type,int size){
            data=(E[]) Array.newInstance(type, size);
            maxsize=size;
            top=-1;
        }
        
        //入栈
        public E push(E item) {
            // TODO Auto-generated method stub
            if(!isFull()){
                data[++top]=item;
                return item;
            }else
            return null;
        }
        
        //栈是否为满
        public boolean isFull() {
            // TODO Auto-generated method stub
            if(top==maxsize-1){
                return true;
            }else{
                return false;
            }
            
        }
    
        //出栈操作
        public E pop() {
            E item=null;
            if(!empty()){
                item=data[top--];
            }
            
            return item;
        }
    
        //获取栈顶元素
        public E peek() {
            // TODO Auto-generated method stub
            E item=null;
            if(!empty()){
                item=data[top];
            }
            return item;
        }
    
        public int size() {
            // TODO Auto-generated method stub
            return top+1;
        }
    
        public boolean empty() {
            // TODO Auto-generated method stub
            if(top==-1){
                return true;
            }else
            return false;
        }
    
    }

    主函数实现

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] data={33,45,3,7,5};
            SeqStack<Integer> stack=new SeqStack<Integer>(Integer.class,data.length);
            //入栈
            System.out.println("******入栈*******");
            for(int i=0;i<data.length;i++){
                stack.push(data[i]);
                System.out.println(data[i]+"入栈");
            }
            
            int size=stack.size();
            System.out.println(size+"*******");
            //出栈
            System.out.println("***出栈****");
            for(int i=0;i<data.length;i++){
                stack.pop();
                System.out.println(stack.pop()+"出栈");
            }
            
        }
  • 相关阅读:
    项目工程化之git提交规范以及 CHANGELOG生成
    移动端 弹窗-内容可滚动,背景不动
    项目readme文件目录生成工具 treer
    css animation动画
    【网络】从套接字到Web服务器
    【网络】图解HTTP-1
    【MySQL】搞懂ACID原则和事务隔离级别
    【MySQL】备份与恢复
    【MySQL】索引
    【Redis】主从复制原理
  • 原文地址:https://www.cnblogs.com/sunli0205/p/6594688.html
Copyright © 2011-2022 走看看