链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
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中的队列、链表和栈,这些概念是许多初学者和专业人士都需要掌握的基础知识。 首先,我们来谈谈队列。队列是一种先进先出(First In First Out,简称FIFO)的数据结构,类似于现实生活中的...
Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...
链表栈是一种数据结构,它利用链表的特性来模拟栈的行为。栈是一种后进先出(LIFO)的数据结构,通常用于临时存储和处理数据。在链表栈中,元素不是存储在固定大小的数组中,而是通过节点链接在一起,每个节点包含一...
在C++编程语言中,链表栈是一种非常基础且实用的数据结构。栈(Stack)遵循“后进先出”(LIFO,Last In First Out)原则,而链表栈则是利用链表数据结构来实现这一特性。下面我们将深入探讨如何使用C++编写链表栈,...
链表栈是一种特殊的栈结构,它利用链表的数据特性来模拟栈的操作。在传统的数组栈中,由于数组的大小固定,栈顶操作可能会受到数组容量的限制。而链表栈则通过动态创建节点来实现栈的压入和弹出操作,具有更好的灵活...
在Java编程中,链表是一种常见的数据结构,用于存储一系列有序的元素。它与数组不同,数组中的元素在内存中是连续存储的,而链表的每个元素(节点)包含两个部分:数据和指向下一个节点的引用。链表操作如插入、删除...
本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...
在实际应用中,链表因其动态性(不需预先确定大小)和高效插入/删除(相对于数组)特性,常用于数据结构如栈、队列、哈希表等。 这些源代码实验可以帮助我们深入理解链表的工作原理以及如何在Java中实现它们。通过...
链表和栈是数据结构与算法中的基础概念,它们在计算机科学中有着广泛的应用。本话题将探讨如何使用C++实现一个基于链表的栈模板。首先,我们来看一下链表和栈的基本概念。 **链表** 是一种线性数据结构,其中的元素...
Java链表是一种基础且重要的数据结构,主要用于存储和管理动态数据集合。在Java中,有多种类型的链表,包括单链表、双链表和循环链表等。本程序可能是针对这些链表类型的一种实现,用于Java考试复习。在Java中,`...
链表栈是一种数据结构,它利用链表(linked list)的数据结构特性来模拟栈(stack)的行为,即后进先出(LIFO)的原则。下面将详细解释这个实现过程以及涉及的关键知识点。 首先,我们需要理解链表栈的基本操作。栈...
JAVA链表实现类(数据结构学习).chm
在Java编程中,实现多项式的加法和乘法通常涉及到数据结构的设计,这里采用链表作为数据结构的基础。本文将详细讲解如何使用链表来实现两个多项式的相加和相乘,并以链表形式输出结果。 首先,我们需要定义一个表示...
java链表,非常易于理解,能帮助你快速掌握链表编程
数据结构 链表 C语言 单向链表 栈
"线性链表,栈(java版)代码"这个标题暗示了提供的代码可能包括线性链表和栈的Java实现,尤其是使用这些数据结构进行实际操作,如在main方法中可能有对链表和栈的操作演示。描述中的“最新”和“简单,易懂”意味着...
本压缩包文件包含了关于C语言中数据结构实现的一些程序,具体涉及到了顺序链表、单链表和双链表以及栈的数据结构。下面我们将详细探讨这些知识点。 首先,我们来看顺序链表。顺序链表是一种线性数据结构,其元素在...
在Java中,我们可以通过链表和数组这两种不同的方式来实现栈。 1. 链表实现栈: - **链表栈定义**:链表栈是一种基于链表结构的栈,每个节点包含数据和指针,使得数据在链表中按照后进先出的顺序排列。 - **链表...
链表、栈和队列是计算机科学中基础且重要的数据结构,它们在程序设计和算法实现中发挥着关键作用。本文将深入探讨这些概念,并结合实际应用进行解析。 首先,我们要理解链表的基本原理。链表不同于数组,它不是连续...
- 栈:通过调整链表的头部,可以实现后进先出(LIFO)的栈数据结构。 - 搜索引擎的倒排索引:链表可以方便地存储单词与文档之间的关系。 8. **Java集合框架中的链表** - Java的`java.util.LinkedList`类是实现了...