【Java】一个数组实现三个栈 (未完待续)

原创 2015年07月10日 10:46:13

等长的相对简单,设置三个栈顶指针,考虑栈为空的情况分别push和pop就好

public class threeStacks {
	int stackSize = 100;
	int[] buffer = new int[ stackSize * 3 ];
	int[] stackPointer = {-1, -1, -1}; //pointer to trace the stack element number in every stack
	
	void push(int stackNum, int value) throws Exception {
		//check if there's free space
		if (stackPointer[stackNum] + 1 >= stackSize) { //the last element
			throw new Exception ("Out of space!");
		}
		
		//stack pointer increases, update the top element value
		stackPointer[stackNum]++;
		buffer[absTopOfStack(stackNum)] = value;
	}
	
	int pop(int stackNum) throws Exception {
		if ( -1 == stackPointer[stackNum] ) {
			throw new Exception ("Trying to pop an empty stack!");
		}
		
		int value = buffer[absTopOfStack(stackNum)];
		buffer[absTopOfStack(stackNum)] = 0; //mark as 0
		stackPointer[stackNum]--;
		return value;
	}
	
	int peek(int stackNum) {
		int index = absTopOfStack(stackNum);
		return buffer[index];
	}
	
	boolean isEmpty(int stackNum) {
		return stackPointer[stackNum] == -1;
	}
		
	//return the top element's absolute index in buffer[]
	int absTopOfStack(int stackNum) {
		return stackNum * stackSize + stackPointer[stackNum];
	}
}


变长的比较复杂, 未完待续

java自定义栈(数组实现)

首先定义一个栈接口,用来描述栈的功能,提供出栈、入栈、获取栈顶元素、判断是否为空以及清空栈;...

用JAVA实现堆栈(数组篇)

什么是堆栈,关于这个名词,我在百度,google搜索了半天,也没有发现一个比较权威的解释,还有许多资料语焉不详,就以维基百科的解释为准吧,和我记忆中的一致。堆栈(英文:stack),中国大陆作堆栈,台...

用java数组实现栈

栈是一种常见的数据结构。如果用一句话来概括栈的特点,估计大部分同学都能脱口而出:后进先出,即先进来的元素保存在栈的最底部,新来的元素则在栈顶堆积,直到栈满为止;而取元素的时候,只能从栈顶取,直到栈空为...

剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)

问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路1...

从Java代码实现角度探讨CSRF(未完待续)

“图难于其易,为大于其细。天下难事,必作于易;天下大事,必作于细",出自老子的《道德经》以及韩非的《韩非子-喻老》。这句话大概意思是解决难事要从简单方面入手,做大事情要从细微角度着手。Web系统安全亦...
  • lybxttj
  • lybxttj
  • 2016年07月03日 17:02
  • 2055

Java 实现常用排序算法(未完待续。。。)

java实现常用排序算法 本文只针对内排序:第四版数据结构教程中写:排序过程中,整个表都是放在内存中处理,排序不涉及内,外存数据的交换,则称之为内排序...
  • dgvggg
  • dgvggg
  • 2017年11月23日 23:53
  • 38

树状数组小结(未完待续)

最近刚刚深入到了树状数组是什么,上年寒假学过,但是当时完全听不到,最近两天沉下心来,好好看了下,终于懂这个原理是什么,感觉并不是很难,而且很好用。 这个图应该更好理解: d[1]=a[1]; d[...

注解Annotation简介,及注解简单应用,数组类型的属性,未完待续---枚举类型的属性,注解类型的属性

package com.base_super.annotation; import java.lang.annotation.ElementType; import java.lang.annota...

后缀数组(未完待续)

后缀数组(Suffix Array, SA)是一种在字符串问题中很实用的工具,其主要作用是求多模板匹配和最长公共前缀(LCP)。...

[DIY]自制一个有漂亮外观的90W 203H高频焊台 ---【未完待续】

//****************************前言 begin*********************************************// TB废品价收了几个CB机玩,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】一个数组实现三个栈 (未完待续)
举报原因:
原因补充:

(最多只允许输入30个字)