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 数据结构 栈 Java数据结构 数据结构栈
主要介绍了java 数据结构之栈与队列的相关资料,这里对java中的栈和队列都做出实现实例来帮助大家理解学习数据结构,需要的朋友可以参考下
java 数据结构总结的思维导图笔记,个人做的非常全,需要的自行下载
Java语言编写的数据结构-栈的实现,包括顺序栈和链栈。
数据结构中的栈的应用实例,java版数据结构源代码,提供实例
基于c语言数据结构中栈和队列思想的简单停车场管理系统,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车...
数据结构(Java)实践作业迷宫参考书本使用栈结构实现的
java基础笔记数据结构-栈,详细描述了栈的原理及其实现方式,基础数据结构。
这个是我写的数据结构的源代码,里面是我写的基本的栈的结构,还有的是基本的队,然后就是循环队列了
包含了各种数据结构和算法(java)的实现方式和详解(图解),包括单双链表、环形链表(约瑟夫问题)、栈、后缀表达式、中缀表达式转后缀表达式、迷宫问题、八大排序算法、多种查找算法、哈希表、二叉树实现以及操作...
第2章 线性表(java版) 第3章 栈与队列(java版) 第4章 串与数组(Java版) 第5章 树与二叉树(java版) 第6章 图(Java版) 第7章 排序(Java版) 第8章 查找(Java版)
JAVA数据结构与算法课程第05课双端链表和双向链表.mp4JAVA数据结构与算法课程第06课递归的应用.mp4JAVA数据结构与算法课程第07课递归的高级应用.mp4JAVA数据结构与算法课程第08课希尔排序.mp4JAVA数据结构与算法课程...
java数据结构面试题,栈,堆,二叉树。
数据结构和算法分析(java)实现中第三章知识点的总结,主要讲的是表。栈、队列的原理和实现,以及应用。一共17页。
基于java数据结构实验报告+-+栈.pdf
数据结构的定义 数据结构是计算机存储、组织数据的方式,用于高效地访问和修改数据。...Java提供了丰富的数据结构库,包括数组、链表、栈、队列等,这些数据结构为程序员提供了处理各种问题的工具和方法。
Java基础复习笔记05数据结构-栈~~~~~~~~~~