堆栈的链式存储称为链栈。
public class Stack<T> implements StackInterface<T> {
private Node<T> top; //链表首结点引用
private int size; //栈的大小
public Stack() {
top = null;
size = 0;
}
//返回堆栈的大小
public int getSize() {
return size;
}
//判断堆栈是否为空
public boolean isEmpty() {
return size==0;
}
//数据元素e入栈
public void push(T t) {
Node<T> q = new Node<T>(t,top);
top = q;
size++;
}
//栈顶元素出栈
public T pop() throws StackEmptyException {
if (size<1)
throw new StackEmptyException("错误,堆栈为空。");
T t = top.getData();
top = top.getNext();
size--;
return t;
}
//取栈顶元素
public T peek() throws StackEmptyException {
if (size<1)
throw new StackEmptyException("错误,堆栈为空。");
return top.getData();
}
//测试:将10进制数转换成8进制数
public static void main(String args[]){
System.out.println("请输入十进制数");
java.util.Scanner in=new java.util.Scanner(System.in);
int i=in.nextInt();
int temp=i;
Stack<Integer> s=new Stack<Integer>();
while(i>0){
s.push(i%8);
i=i/8;
}
System.out.println("十进制数"+temp+"转换成8进制数是:");
while(!s.isEmpty())
System.out.print(s.pop());
}
}
interface StackInterface<T> {
//返回堆栈的大小
public int getSize();
//判断堆栈是否为空
public boolean isEmpty();
//数据元素e入栈
public void push(T t);
//栈顶元素出栈
public T pop() throws StackEmptyException;
//取栈顶元素
public T peek() throws StackEmptyException;
}
class Node< T> {
private T data;
private Node< T> next;
public Node() {
this(null,null);
}
public Node(T data, Node< T> next) {
this.data = data;
this.next = next;
}
public T getData(){
return data;
}
public void setData(T data){
this.data=data;
}
public Node<T> getNext(){
return this.next;
}
public void setNext(Node<T> next){
this.next=next;
}
}
//堆栈为空时出栈或取栈顶元素抛出此异常
class StackEmptyException extends RuntimeException{
public StackEmptyException(String err) {
super(err);
}
}
代码下载:
分享到:
相关推荐
代码有详细注释! 1.语言:使用java编程 2.数据结构:使用单链表头插法仿实现栈 3.非递归使用DFS搜索一条路径 4.递归求解所有路径
17循环链表 18双项链表 19链式栈 20链式队列 21STL_list类 22基数排序 23属 24二叉树 25二叉树找数 26红黑树 27红黑树_0 28红黑树_1 29红黑树_2 30红黑树_3 31红黑树_4 32红黑树_5 33红黑树_6 34堆 35堆排序 36...
主要介绍了Java栈之链式栈存储结构的实现代码的相关资料,需要的朋友可以参考下
JAVA语言实现数据的链式结构 分享下挣挣人气
用java实现将中缀转后缀,并计算出后缀表达式的结果
主要介绍了Java语言实现数据结构栈代码详解,简单介绍了栈的概念,然后分享了线性栈和链式栈的Java代码,具有一定参考价值,需要的朋友可以了解下。
问题:用链表实现一个链式栈 队列 问题:用数组实现一个顺序队列 问题:用链表实现一个链式队列 问题:实现一个循环队列 递归 问题:编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2) 问题:编程实现求阶乘n! 排序...
通过本课程的学习,学员可以掌握以下技术点:线性结构与顺序表、单向链表、循环链表、栈的基本概念、链式堆栈、中缀表达式、队列、链式队列、串、MyString、Brute-Force算法、MySet类实现、矩阵类、递归算法、哈夫曼...
栈和队列的基本操作及其应用 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。...3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。 回文判断
通过本课程的学习,学员可以掌握以下技术点:线性结构与顺序表、单向链表、循环链表、栈的基本概念、链式堆栈、中缀表达式、队列、链式队列、串、MyString、Brute-Force算法、MySet类实现、矩阵类、递归算法、哈夫曼...
java 向量的实现 栈实现 队列实现 链表的实现 二叉树的实现 求二叉树的深度 按层次遍历二叉树 求二叉树的宽度 各类排序算法java实现
栈(顺序栈/链式栈)的数据结构及其相关算法:栈结构包含两个要素,即栈顶指针top和栈大小size,具体操作包括: 压栈操作push 弹栈操作pop 查看栈顶元素peek 查看栈的大小 查看栈是否为空 查看栈的最小元素(O(1)时间...
包含数据结构常用的知识:顺序表(数组实现和链表)、栈和队列的顺序实现和链式实现,二叉树的实现和遍历、常用的排序算法
(1) 掌握栈的基本操作的实现方法。 (2) 利用栈先进后出的特点,解决一些实际问题。 (3) 掌握链式队列及循环队列的基本操作算法。 (4) 应用队列先进先出的特点,解决一些实际问题。 二、 实验内容: 1、 使用...
包含JWArray和JWList,分别包含顺序结构及链式结构的线性表、栈和队列操作,函数使用方便简单,可以作为简单的C语言线性表、栈和队列操作库。
17循环链表 18双项链表 19链式栈 20链式队列 21STL_list类 22基数排序 23属 24二叉树 25二叉树找数 26红黑树 27红黑树_0 28红黑树_1 29红黑树_2 30红黑树_3 31红黑树_4 32红黑树_5 33红黑树_6 34堆 35堆排序 36...
17循环链表 18双项链表 19链式栈 20链式队列 21STL_list类 22基数排序 23属 24二叉树 25二叉树找数 26红黑树 27红黑树_0 28红黑树_1 29红黑树_2 30红黑树_3 31红黑树_4 32红黑树_5 33红黑树_6 34堆 35堆排序 36...
实现栈的基本操作(顺序栈和链式栈) 队列的基本概念 && 实现队列的基本操作(顺序队列、链式队列和循环队列) 阅读jdk源码 LinkedList ArrayList 刷题:剑指offer或者leetCode 剑指offer,刷题可以使用 leetCode,...