链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
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 链表心得,对于感到困难的朋友会有很大帮助,与其他语言互通
用java链表实现了两个多项式的相加、相乘,最后得到最终结果以链表形式输出
JAVA链表实现类(数据结构学习).chm
java链表,非常易于理解,能帮助你快速掌握链表编程
本资料实例讲解java单项链表的实现以及拓展进行排序,每行代码都附有注释
数据结构 链表 C语言 单向链表 栈
数据结构中“字符串 向量 链表 栈和队列”等类型的模板实现
关于c语言的程序与习题 有关于顺序链表 单链表 双链表 栈等程序,运用相关软件打开并运行,就可以看到效果
链表实验JAVA 源代码 压缩包分三个文件ListNode.java,StringLinkedList.java,StringLinkedList.java
顺序栈和链表栈(链栈)的初始化栈、判断栈是否为空、得到栈顶元素、清空栈、销毁栈、检测栈长度、入栈、出栈。程序可测试。
java中链表的创建 使用 实例 。初学者用于理解链表的使用。带有60%带有注释。 java链表 链表的讲解 java源代码加注释
用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。
数据结构经常用到的,链表栈,迷宫算法,VC平台,
约瑟夫问题,通过类实现的链表,并加以改进,做成双向链表
Java 数据结构 链表 Java链表 数据结构链表
节点的数据设计具有一般性(使用void *data),使用链表栈实现本功能,且栈的Top指针作为每个函数的形式参数。最后以int型序号管理为实例,演示实验功能。ac_impl.c负责输出选择菜单项;test_impl.c中实现对菜单的...
自己写的 数据结构之链表栈与队列 出来与同路的新手分享
java考试复习用,顺手写了一个。zip