算法-3-链表栈(最优设计方案-算法1.2)

目录

1、链表

2、链表栈

3、链表栈Kotlin


1、链表

链表是一种递归的数据结构,链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 

2、链表栈

链表的加入,让我们的栈的设计达到了最有的方案:

  • 它可以处理任何类型的数据;
  • 所需的空间总是和集合的大小成正比;
  • 操作所需时间总是和集合大小无关。
public class LinkedStack<T> {

    private Node first;
    private int N = 0;// 集合的数量
    // 结点
    class Node {
        T item;
        Node next;
    }
    /**
     * 将元素放入栈顶
     */
    public void push(T t) {
        Node oldFirst = first;
        first = new Node();
        first.item = t;
        first.next = oldFirst;
        N++;
    }
    /**
     * 将元素从栈顶删除
     */
    public T pop() {
        T item=first.item;
        first=first.next;
        N--;
        return item;
    }
    public boolean isEmpty() {
        return N == 0;
    }
    public int size() {
        return N;
    }
}

3、链表栈Kotlin

class LinkedStack1<T> {
    private var first: Node? = null
    private var N = 0 // 集合的数量

    // 结点
    internal inner class Node {
        var item: T? = null
        var next: Node? = null
    }

    fun push(t: T) {
        val oldFirst = first
        first = Node()
        first!!.item = t
        first!!.next = oldFirst
        N++
    }

    fun pop(): T? {
        val item: T? = first?.item
        first = first!!.next
        N--
        return item
    }

    val isEmpty: Boolean
        get() = N == 0

    fun size(): Int {
        return N
    }
}

 

 

本文章的大部门内容来之于由Robert Sedgewick和Kevin Wayne著的《算法》第四版书籍中,本文章的目的主要是为了记录自己的学习笔记和技术分享。

发布了82 篇原创文章 · 获赞 16 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/qq_34589749/article/details/103991964