zoukankan      html  css  js  c++  java
  • 《Java数据结构与算法》笔记-CH5-链表-4用链表实现堆栈

      1 //用链表实现堆栈
      2 /**
      3  * 节点类
      4  */
      5 class LinkS {
      6     private long data;
      7     public LinkS next;
      8 
      9     public LinkS(long d) {
     10         this.data = d;
     11     }
     12 
     13     public String toString() {
     14         return String.valueOf(data);
     15     }
     16 }
     17 
     18 /**
     19  * 链表类
     20  */
     21 class LinkSList {
     22     private LinkS first;
     23 
     24     public LinkSList() {
     25         first = null;
     26     }
     27 
     28     public void insertFirst(LinkS node) {
     29         node.next = first;
     30         first = node;
     31     }
     32 
     33     public LinkS deleteFirst() {
     34         LinkS temp = first;
     35         first = first.next;
     36         return temp;
     37     }
     38 
     39     public boolean isEmpty() {
     40         return first == null;
     41     }
     42 
     43     public String toString() {
     44         if (isEmpty())
     45             return "[]";
     46         StringBuilder sb = new StringBuilder();
     47         sb.append("[");
     48         LinkS curr = first;
     49         while (curr != null) {
     50             sb.append(curr.toString()).append(",");
     51             curr = curr.next;
     52         }
     53         sb.deleteCharAt(sb.length() - 1);
     54         sb.append("]");
     55         return sb.toString();
     56     }
     57 }
     58 
     59 /**
     60  * 栈
     61  */
     62 class LinkStack {
     63     private LinkSList linkList;
     64 
     65     public LinkStack() {
     66         this.linkList = new LinkSList();
     67     }
     68 
     69     public void push(LinkS l) {
     70         this.linkList.insertFirst(l);
     71     }
     72 
     73     public LinkS pop() {
     74         return this.linkList.deleteFirst();
     75     }
     76 
     77     public boolean isEmpty() {
     78         return this.linkList.isEmpty();
     79     }
     80 
     81     public String toString() {
     82         return this.linkList.toString();
     83     }
     84 
     85     public void display() {
     86         System.out.println(toString());
     87     }
     88 }
     89 
     90 public class LinkStackDemo {
     91     public static void main(String[] args) {
     92         LinkStack stack = new LinkStack();
     93         for (int i = 0; i < 5; i++) {
     94             LinkS l = new LinkS(i);
     95             stack.push(l);
     96             stack.display();
     97         }
     98         while (!stack.isEmpty()) {
     99             System.out.print("pop出" + stack.pop());
    100             System.out.print("现在栈为:");
    101             stack.display();
    102         }
    103     }
    104 }
  • 相关阅读:
    二叉搜索树的后序遍历序列
    验证二叉搜索树
    合并二叉树
    工龄计算方案
    hadoop集群中动态添加节点
    java知识点
    Hadoop经典案例(排序&Join&topk&小文件合并)
    mysql学习
    大数据开发面试
    我保存的网址
  • 原文地址:https://www.cnblogs.com/fstack/p/5617252.html
Copyright © 2011-2022 走看看