zoukankan      html  css  js  c++  java
  • 链式栈——Java实现

      1 package struct;
      2  
      3 //接口
      4 interface ILinkStack{
      5     //栈中元素个数(栈大小)
      6     int size();
      7     //取栈顶元素
      8     Object top();
      9     //判断栈是否为空
     10     boolean isEmpty();
     11     //入栈
     12     Object pop();
     13     //出栈
     14     Object push(Object value);
     15     //清空栈
     16     void clear();
     17 }
     18  
     19 //工厂类
     20 class Factory2{
     21     private Factory2(){}
     22     public static ILinkStack getILinkStackInstance(){
     23         return new LinkStackImpl();
     24     }
     25 }
     26  
     27 class LinkStackImpl implements ILinkStack {
     28     //栈顶元素
     29     Node top;
     30     //链表长度记录入栈元素
     31     private int count;
     32     class Node{
     33         Node prev;
     34         Node next;
     35         Object data;
     36         public Node(Object data) {
     37             this.data = data;
     38         }
     39     }
     40     
     41     public int size() {
     42         return count;
     43     }
     44  
     45     public Object top() {
     46         return top.data;
     47     }
     48     //判栈空
     49     public boolean isEmpty() {
     50         return (size()==0);
     51     }
     52     //入栈
     53     public Object push(Object value) {
     54         Node node = new Node(value);
     55         if(top == null){
     56             top = node;
     57         }else{
     58             top.next = node;
     59             node.prev = top;
     60             top = top.next;
     61         }
     62         count++;
     63         return top;
     64     }
     65     public void print(){
     66         System.out.println("从栈顶到栈底打印栈中元素:");
     67         myPrint(top);
     68         return;
     69     }
     70     //栈顶->栈底打印链表
     71     private void myPrint(Node top){
     72         for(Node node = top;node!=null;node=node.prev){
     73             System.out.print(node.data+" ");
     74         }
     75     }
     76     //出栈
     77     public Object pop() {
     78         Node node = top;
     79         if(top == null){
     80             System.out.println("空栈无要出栈元素");
     81             return -1;
     82         }else{
     83             top = top.prev;
     84             node.prev = null;
     85             node.data = null;
     86         }
     87         count--;
     88         return top();
     89     }
     90     //清空栈
     91     public void clear(){
     92         Node node1 = top;
     93         for(Node node = top;node!=null;){
     94             node = node.prev;
     95             node1.data = null;
     96             node1.prev = null;
     97             count--;
     98         } 
     99     }
    100 }
    101 public class LinkStack {
    102     public static void main(String[] args) {
    103         ILinkStack linkStack = Factory2.getILinkStackInstance();
    104         //向下转型
    105         LinkStackImpl linkStack1 = (LinkStackImpl)linkStack;
    106         System.out.println("============测试isEmpty函数(空栈)=================");
    107         System.out.println(linkStack.isEmpty());
    108         System.out.println("============测试push和print函数=================");
    109         linkStack.push(5);
    110         linkStack.push(9);
    111         linkStack.push(10);
    112         linkStack.push(1);
    113         linkStack.push(8);
    114         linkStack.push(12);
    115         linkStack.push(6);
    116         linkStack.push(3);
    117         linkStack1.print();
    118         System.out.println();
    119         System.out.println("============入栈后测试top函数=================");
    120         System.out.println(linkStack.top());
    121         System.out.println("============入栈后测试size函数=================");
    122         System.out.println(linkStack.size());
    123         System.out.println("============测试pop和print函数=================");
    124         linkStack.pop();
    125         linkStack.pop();
    126         linkStack.pop();
    127         linkStack1.print();
    128         System.out.println();
    129         System.out.println("============出站后测试top函数=================");
    130         System.out.println(linkStack.top());
    131         System.out.println("============出栈后测试size函数=================");
    132         System.out.println(linkStack.size());
    133         System.out.println("============测试clear后size函数=================");
    134         linkStack.clear();
    135         System.out.println(linkStack.size());
    136     }
    137 }
    View Code

  • 相关阅读:
    application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用
    SpringBoot项目打war包部署Tomcat教程
    spring boot 集成 redis lettuce
    spring boot maven打包可运行jar包
    IDEA项目搭建十四——Web站点Controller基类及布局页静态资源设计
    Nginx Windows详细安装部署教程
    多线程编程CompletableFuture与parallelStream
    IDEA项目搭建十三——服务消费端与生产端通信实现
    【异常】MySQL建表报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"order"' at line 1
    【警告】mysql链接警告信息:Establishing SSL connection without server's identity verification is not recommended
  • 原文地址:https://www.cnblogs.com/edda/p/12595026.html
Copyright © 2011-2022 走看看