Java数据结构系列之——栈(1):栈的顺序存储结构及操作

package Stack;
/**
 * 栈的定义:限定只在表末尾进行增加和删除操作的线性表
 * 栈的特点:先进后出FILO(First In Last Out)
 * 		  通常我们把允许插入和删除的一段称为栈顶(top),另一端
 *       称为栈底,不包含任何元素的栈称为空栈
 * 栈的出栈操作我们一般称为进栈或者压栈或者入栈
 * 栈的删除操作我们一般称为出栈或者弹栈
 *
 * 这里我们用数组来实现栈的顺序存储结构及各种操作
 * @author wl
 *
 */
public class MyStack {
	private int[] array;//用来存放栈的元素
	private int top;//栈顶指针

	/**
	 * 默认构造函数,用于初始化栈,这里我们
	 * 将栈的大小默认初始化为10
	 */
	public MyStack(){
		array=new int[10];
		top=-1;
	}

	/**
	 * 自定义构造函数,可以用于指定栈的初始化
	 * 空间大小
	 */
	public MyStack(int capacity){
		array=new int[capacity];
		top=-1;
	}

	/*
	 * 压栈操作
	 */
	public void push(int value){
		if(isFull()){//栈满
			throw new RuntimeException("栈已满,元素'"+value+"'压栈不成功");
		}
		array[++top]=value;
	}

	public int peek(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top];
	}
	/**
	 * 出栈操作
	 * @return
	 */
	public int pop(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top--];
	}

	/**
	 * 判断栈是否为空
	 * @return
	 */
	public boolean isEmpty(){
		return top==-1;
	}
	/**
	 * 判断栈是否满了
	 */
	public boolean isFull(){
		return top==array.length-1;
	}
}

时间: 2024-10-04 12:40:05

Java数据结构系列之——栈(1):栈的顺序存储结构及操作的相关文章

数据结构系列(四)栈与队列

栈 定义 栈是一种特殊的线性表 操作 存储结构 从存储结构来看,分为顺序栈和链栈,同线性表的划分 应用 递归-菲波那切数列 后缀表达式-逆波兰表示 队列 定义 队列也是一种特殊的线性表 操作 队列是一种先进先出的线性表 FIFIO,允许插入的一端是队尾,允许删除的一端是队头 存储结构 从存储结构来看,分为顺序队列和链队列,同线性表的划分 应用

数据结构(十五)串的顺序存储结构(顺序串)

一.串的定义:串(String)是由零个或多个字符组成的有限序列,又名叫字符串. 二.串中的字符数目n称为串的长度,零个字符的串称为空串(null string),它的长度为零.子串在主串中的位置就是子串的第一个字符在主串中的序号. 三.串的大小:首先比较每个字符对应的ASCII码,然后比较长度n. 四.串中关注更多的是查找子串位置.得到指定位置子串.替换子串等操作. 五.串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的.按照预定义的大小,为每个定义的串变量分配一个固定长度的存储

Java数据结构系列之——栈(2):栈的链式存储结构及其操作

package Stack; import LinkList.SinglyLinkList; public class LinkListStack { private SinglyLinkList<Integer> singlyLinkList; /** * 默认构造函数,用于初始化栈 */ public LinkListStack(){ singlyLinkList=new SinglyLinkList<Integer>(); } /* * 压栈操作 */ public void

Javascript与数据结构系列(一)——栈的实现

栈的实现 实现一个栈,当务之急是决定存储数据的底层数据结构.这里采用的是数组. 我们的实现以定义 Stack 类的构造函数开始: function Stack() { this.dataStore = []; this.top = 0; this.push = push; this.pop = pop; this.peek = peek; } 我们用数组 dataStore 保存栈内元素,构造函数将其初始化为一个空数组.变量 top 记录 栈顶位置,被构造函数初始化为 0,表示栈顶对应数组的起始

Java数据结构系列之——树(4):二叉树的中序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树的中序遍历:递归与非递归实现 * * @author wl * */ public class BiTreeInOrder { // 中序遍历的递归实现 public static void biTreeInOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreeInOrderByRecursi

Java数据结构系列之——树(5):二叉树的后序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树后序遍历的递归与非递归实现 * * @author wl * */ public class BitreePostOrder { // 后序遍历的递归实现 public static void biTreePostOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreePostOrderByRe

Java数据结构系列之——树(6):二叉树的层序遍历

package tree.binarytree; import java.util.LinkedList; /** * 层序遍历二叉树 * * @author wl * */ public class PrintFromTopToBotton { public static void printfromtoptobotton(BiTreeNode root) { if (root == null) { return; } LinkedList<BiTreeNode> queue = new L

Java数据结构系列之——树(2):二叉树的实现及其常用操作

package tree.binarytree; public class BiTreeNode { int data; BiTreeNode leftNode; BiTreeNode rightNode; public BiTreeNode(){ leftNode=null; rightNode=null; } public BiTreeNode(int data,BiTreeNode leftNode,BiTreeNode rightNode){ this.data=data; this.l

java数据结构系列之——数组(1)

import javax.management.RuntimeErrorException; public class MyArray { private long array[]; private int elements;//用于记录数组中实际数据的个数 public MyArray(){ array=new long[50];//数组默认长度为50: } public MyArray(int capacity){//设置数组的默认长度 array=new long[capacity]; }