`

Java链表栈LinkedStack

阅读更多

链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。  

 * 然后往里面一个一个的加节点:  

 * 1.先加入top节点  

 * 2.然后再在top节点上加入node1节点,node1节点指向top节点  

 * 3.再在node1节点上加入node2节点,node2节点指向node1节点  

 * ..........  

   

 

Java实现链栈之前,我们首先应该创建一个链表节点类:LinkNode<E>,代码如下:

/**
 * 链表节点
 * 
 * @author 鼎鼎
 * 
 * @param <E>
 */
public class LinkNode<E> {
	/**
	 * 表示存储在节点中的数据项
	 */
	private E data;

	private LinkNode<E> next;

	public LinkNode(E data) {
		this.data = data;
		this.next = null;
	}

	public LinkNode(E data, LinkNode next) {
		this.data = data;
		this.next = next;

	}

	public E getData() {
		return data;
	}

	public void setData(E data) {
		this.data = data;
	}

	public LinkNode<E> getNext() {
		return next;
	}

	public void setNext(LinkNode<E> next) {
		this.next = next;
	}

}

 

 

然后 是具体的链栈的实现,代码如下:

/**
 * 链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
 * 然后往里面一个一个的加节点:
 * 1.先加入top节点
 * 2.然后再在top节点上加入node1节点,node1节点指向top节点
 * 3.再在node1节点上加入node2节点,node2节点指向node1节点
 * ..........
 * 
 * @author 鼎鼎
 *
 * @param <E>
 */
public class LinkedStack<E> implements Stack<E> {
	// 表示链表的头结点
	private LinkNode<E> top;

	// 表示链表中当前的元素个数
	private int size;

	public LinkedStack() {
		this.top = null;
		size = 0;

	}

	public boolean isEmpty() {
		return top == null;
	}

	public E pop() {
		if (isEmpty()) {

			throw new RuntimeException("链表为空!!");
		}
		// 将栈顶元素的值保存起来
		E tempData = top.getData();
		// 然后出栈,次栈顶元素成为新的栈顶元素
		top = top.getNext();
		// 栈中元素个数减少一
		size--;
		return tempData;
	}

	public void push(E target) {
		if(target==null){
			throw new RuntimeException("不能往栈中加入null元素");
			
		}
		LinkNode<E> newNode = new LinkNode<E>(target);
		if (isEmpty()) {
			top = newNode;
		} else {
			//新加入的节点放入栈中,并指向原来的top节点
			newNode.setNext(top);
			// 新加入的元素成为了新的栈顶
			top = newNode;
		}
		size++;
	}

	public int size() {
	   return size;
	}

	public E top() {
		if (isEmpty()) {

			throw new RuntimeException("链表为空!!");
		}
		return top.getData();
	}

}

 

分享到:
评论

相关推荐

    java 队列 链表 栈

    本篇文章将详细讲解Java中的队列、链表和栈,这些概念是许多初学者和专业人士都需要掌握的基础知识。 首先,我们来谈谈队列。队列是一种先进先出(First In First Out,简称FIFO)的数据结构,类似于现实生活中的...

    java链表 个人总结

    Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...

    链表栈的实现

    链表栈是一种数据结构,它利用链表的特性来模拟栈的行为。栈是一种后进先出(LIFO)的数据结构,通常用于临时存储和处理数据。在链表栈中,元素不是存储在固定大小的数组中,而是通过节点链接在一起,每个节点包含一...

    c++写的链表栈

    在C++编程语言中,链表栈是一种非常基础且实用的数据结构。栈(Stack)遵循“后进先出”(LIFO,Last In First Out)原则,而链表栈则是利用链表数据结构来实现这一特性。下面我们将深入探讨如何使用C++编写链表栈,...

    链表栈实现迷宫算法VC平台

    链表栈是一种特殊的栈结构,它利用链表的数据特性来模拟栈的操作。在传统的数组栈中,由于数组的大小固定,栈顶操作可能会受到数组容量的限制。而链表栈则通过动态创建节点来实现栈的压入和弹出操作,具有更好的灵活...

    java链表反转及排序

    在Java编程中,链表是一种常见的数据结构,用于存储一系列有序的元素。它与数组不同,数组中的元素在内存中是连续存储的,而链表的每个元素(节点)包含两个部分:数据和指向下一个节点的引用。链表操作如插入、删除...

    栈:顺序栈和链表栈_C语言项目

    本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...

    JAVA 链表实验源代码

    在实际应用中,链表因其动态性(不需预先确定大小)和高效插入/删除(相对于数组)特性,常用于数据结构如栈、队列、哈希表等。 这些源代码实验可以帮助我们深入理解链表的工作原理以及如何在Java中实现它们。通过...

    基于链表栈模板的实现

    链表和栈是数据结构与算法中的基础概念,它们在计算机科学中有着广泛的应用。本话题将探讨如何使用C++实现一个基于链表的栈模板。首先,我们来看一下链表和栈的基本概念。 **链表** 是一种线性数据结构,其中的元素...

    java链表的程序

    Java链表是一种基础且重要的数据结构,主要用于存储和管理动态数据集合。在Java中,有多种类型的链表,包括单链表、双链表和循环链表等。本程序可能是针对这些链表类型的一种实现,用于Java考试复习。在Java中,`...

    一个用C++编的用链表栈实现的表达式求值

    链表栈是一种数据结构,它利用链表(linked list)的数据结构特性来模拟栈(stack)的行为,即后进先出(LIFO)的原则。下面将详细解释这个实现过程以及涉及的关键知识点。 首先,我们需要理解链表栈的基本操作。栈...

    JAVA链表实现类(数据结构学习)

    JAVA链表实现类(数据结构学习).chm

    多项式相加 java链表实现

    在Java编程中,实现多项式的加法和乘法通常涉及到数据结构的设计,这里采用链表作为数据结构的基础。本文将详细讲解如何使用链表来实现两个多项式的相加和相乘,并以链表形式输出结果。 首先,我们需要定义一个表示...

    非常有用的java链表编程

    java链表,非常易于理解,能帮助你快速掌握链表编程

    数据结构 链表 C语言 单向链表 栈

    数据结构 链表 C语言 单向链表 栈

    线性链表,栈(java版)代码

    "线性链表,栈(java版)代码"这个标题暗示了提供的代码可能包括线性链表和栈的Java实现,尤其是使用这些数据结构进行实际操作,如在main方法中可能有对链表和栈的操作演示。描述中的“最新”和“简单,易懂”意味着...

    C语言 顺序链表 单链表 双链表 栈等程序

    本压缩包文件包含了关于C语言中数据结构实现的一些程序,具体涉及到了顺序链表、单链表和双链表以及栈的数据结构。下面我们将详细探讨这些知识点。 首先,我们来看顺序链表。顺序链表是一种线性数据结构,其元素在...

    Java数据结构篇-链表与数组实现栈.pptx.pptx

    在Java中,我们可以通过链表和数组这两种不同的方式来实现栈。 1. 链表实现栈: - **链表栈定义**:链表栈是一种基于链表结构的栈,每个节点包含数据和指针,使得数据在链表中按照后进先出的顺序排列。 - **链表...

    数据结构之链表栈与队列

    链表、栈和队列是计算机科学中基础且重要的数据结构,它们在程序设计和算法实现中发挥着关键作用。本文将深入探讨这些概念,并结合实际应用进行解析。 首先,我们要理解链表的基本原理。链表不同于数组,它不是连续...

    java链表实现

    - 栈:通过调整链表的头部,可以实现后进先出(LIFO)的栈数据结构。 - 搜索引擎的倒排索引:链表可以方便地存储单词与文档之间的关系。 8. **Java集合框架中的链表** - Java的`java.util.LinkedList`类是实现了...

Global site tag (gtag.js) - Google Analytics