1,栈接口
package pku.ss.datastructure.IStackLi;
public interface IStackLi {
/**
* Get the size of the stack
* @return size of the stack
*/
public int getSize();
/**
* Judge that if the stack is full
* @return true or false
*/
public boolean isFull();
/**
* Judge that if the stack is empty
* @return true or false
*/
public boolean isEmpty();
/**
* Set the stack to be empty
*/
public void makeEmpty();
/**
* Push a element x into stack, if the operation is right then return true,
* else return false
* @param x
* @return true or false
*/
public boolean push(Object x);
/**
* return the top element of the stack
* @return the top element
*/
public Object top();
/**
* Pop the top element from the stack, if the operation is right, then return
* true, else return false
* @return true or false
*/
public boolean pop();
}
2,栈的实现
package pku.ss.datastructure.StackLi;
import pku.ss.datastructure.IStackLi.IStackLi;
public class StackLi implements IStackLi {
private int maxSize;
private int size;
private ListNode topOfStack;
public StackLi(int maxSize) {
this.maxSize = maxSize;
size = 0;
topOfStack = null;
}
@Override
public int getSize() {
return this.size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public boolean isFull() {
return size > maxSize - 1;
}
@Override
public void makeEmpty() {
size = 0;
topOfStack = null;
}
@Override
public boolean pop() {
if (isEmpty()) {
System.out.println("[ERROR] Atempt to pop from a empty stack!");
return false;
} else {
topOfStack = topOfStack.next;
size--;
return true;
}
}
@Override
public boolean push(Object x) {
if (isFull()) {
System.out.println("[ERROR] Atempt to push into a full stack!");
return false;
} else {
ListNode temp = new ListNode(x);
temp.next = topOfStack;
topOfStack = temp;
size++;
return true;
}
}
@Override
public Object top() {
if (isEmpty()) {
System.out.println("[ERROR] Atempt to get the top element from a empty stack!");
return null;
}
return topOfStack.element;
}
}
3,节点类型
package pku.ss.datastructure.StackLi;
public class ListNode {
ListNode(Object theElement) {
this(theElement, null);
}
ListNode(Object theElement, ListNode aNext) {
element = theElement;
next = aNext;
}
Object element; //节点中的元素
ListNode next; //指向下一个节点
}
4,测试类
package pku.ss.datastructure.Demo;
import pku.ss.datastructure.StackLi.StackLi;
public class StackLiDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StackLi stack = new StackLi(5);
stack.push("A");
stack.push("B");
stack.push("C");
stack.push("D");
stack.push("E");
stack.push("F");
stack.push("G");
stack.push("H");
System.out.println("**********************");
System.out.println("The size of the stack is: " + stack.getSize());
System.out.println("**********************");
System.out.println("The top element of the stack is: " + stack.top());
System.out.println("**********************");
stack.makeEmpty();
System.out.println("The top element of the stack is: " + stack.top());
System.out.println("**********************");
System.out.println("The size of the stack is: " + stack.getSize());
}
}
分享到:
相关推荐
Java 数据结构中的栈和堆是两种重要的内存管理方式,它们在程序执行时分别扮演着不同的角色。栈主要负责存储程序运行过程中的局部变量、函数调用等信息,而堆则是用于动态分配对象内存的区域。 栈的优势在于其存取...
Java数据结构之栈的基本定义与实现方法示例 Java数据结构之栈是一种特殊的线性表,它只能在某一端插入和删除元素,按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶...
Java 数据结构之栈与队列 Java 数据结构之栈与队列是计算机科学中的一种基本数据结构,它们都是用于存储和处理数据的集合。栈和队列都是线性数据结构,但是它们的实现方式和使用场景不同。 一、栈(Stack) 栈是...
java 数据结构总结的思维导图笔记,个人做的非常全,需要的自行下载
总之,Java中的栈数据结构提供了一种高效的方法来处理需要后进先出逻辑的问题,它在编程中扮演着至关重要的角色,尤其是在处理需要临时存储和按顺序处理数据的任务时。了解和熟练掌握栈的操作和实现对于提升编程技能...
在这个主题中,我们将深入探讨如何在Java中实现栈这一基本数据结构,具体包括顺序栈(stack_SqStack)和链栈(stack_SLinkList)。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于临时存储和快速...
《Java数据结构和算法中文第二版》是一本深入探讨Java编程中数据结构和算法的书籍。数据结构是计算机科学的基础,它涉及到如何有效地组织和存储数据,以便在各种操作下高效地访问和修改。算法则是解决问题的具体步骤...
"Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的...本篇文章主要介绍了Java常见数据结构面试题,涵盖了栈、队列、链表、线性表、树、算法、数据结构等知识点,希望对广大的程序爱好者有所帮助。
Java数据结构是计算机科学中的重要课程,主要探讨如何有效地存储和组织数据,以便进行高效的操作。这门课程通常包括数组、链表、栈、队列、树、图、哈希表等多种数据结构,并深入讲解它们的特性、操作方法以及在实际...
Java 数据结构中的“栈”是一种基础且重要的抽象数据类型,它遵循“后进先出”(LIFO)的原则。在栈中,最后插入的元素(压入)将首先被删除(弹出)。栈广泛应用于各种计算机算法和程序设计中,如表达式求值、深度...
《Java数据结构与算法中文版》是一本深入探讨编程核心领域的书籍,主要针对Java程序员,旨在提升他们在数据处理和问题解决能力上的技能。这本书详细介绍了数据结构和算法的基础理论及其在Java语言中的实现,是Java...
《Java数据结构与算法》是一本深入探讨编程基础与进阶技术的书籍,其中的"applet"部分涉及了Java编程中的一个重要概念——Java小应用程序。Applet是Java语言在Web环境中的一种应用形式,它可以在浏览器中运行,为...
栈和队列是两种最基本且重要的数据结构,广泛应用于各种算法和系统设计中。 首先,栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构。它的工作原理类似于日常生活中使用的堆叠物品,最后放入的物品...
"Java数据结构实例"这个主题,旨在通过具体的代码实例帮助初学者掌握数据结构的基本概念和使用方式,以此来提升编程思维和问题解决能力。在这个压缩包文件中,我们可以预期找到一些用Java实现的数据结构的源代码。 ...
根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...
资源摘要信息是关于Java数据结构和算法的知识点总结,涵盖了数组、栈与队列、链表、递归、哈希表、高级排序、二叉树、红黑树、堆、带权图等数据结构和算法概念。 一、数组 * 数组是相同类型变量的集合,可以使用...
《Java数据结构全套》是针对Java编程语言深入学习数据结构的重要资源集合,涵盖了从基本概念到高级应用的全面知识体系。这个压缩包包含了四部分关键内容:叶核亚编著的《数据结构(Java版)(第3版)》电子教案、...
Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...
《邓俊辉版Java数据结构源码》是学习数据结构与算法的重要参考资料,它与邓俊辉教授编写的《Java数据结构》教材相配套,旨在帮助读者深入理解数据结构的概念和实现方法。邓俊辉教授的讲解风格清晰易懂,他的源码同样...