java实现顺序栈

简介: 顺序栈类的代码: package sequencestack; public class SequenceStack { private int STACK_INIT_SIZE = 5;//栈的原始大小 private int INCREMENT =1;//栈的增量大小 ...

顺序栈类的代码:

package sequencestack;

public class SequenceStack {
	
	private int STACK_INIT_SIZE = 5;//栈的原始大小
	private int INCREMENT =1;//栈的增量大小
	
	
	private Object []Stack = null;
	private int base;
	private int top;
	private int stacksize;
	
	/**
	 * 初始化栈
	 * */
	void initStack()
	{
		Stack = new Object[STACK_INIT_SIZE];
		base=0;
		top=0;
		stacksize=0;
	}
	
	/**
	 * 入栈
	 * */
	void push(Object o)
	{
		if(top-base>=STACK_INIT_SIZE)
		{
			System.out.println("扩充栈");
			STACK_INIT_SIZE=STACK_INIT_SIZE+INCREMENT;
			Object []temp = new Object[STACK_INIT_SIZE];
			for(int i=0;i<stacksize;i++)
			{
				temp[i]=Stack[i];
			}
			Stack=null;
			Stack=temp;
		}
		Stack[stacksize] = o;
		stacksize++;
		top++;
	}
	/**
	 * 出栈
	 * */
	Object pop()
	{
		Object o = null;
		if(top==base)
		{
			System.out.println("栈中没有元素!返回null");
		}else
		{
			o=Stack[--top];
			stacksize--;
		}
		return o;
	}
	
	/**
	 * 取栈顶元素
	 * */
	Object getTop()
	{
		Object o = null;
		if(top==base)
		{
			System.out.println("栈中没有元素!返回null");
		}else
		{
			o=Stack[top-1];
		}
		return o;
	}
	
	/**
	 * 打印栈
	 * */
	void print()
	{
		System.out.print("打印栈:");
		for(int i=0;i<stacksize;i++)
		{
			System.out.print(Stack[i]+"\t");
		}
		System.out.println();
	}
}

顺序栈测试代码:

package sequencestack;

public class SequenceStackMain {

	public static void main(String[] args) {
		SequenceStack sStack = new SequenceStack();
		sStack.initStack();
		sStack.pop();
		sStack.push(1);
		sStack.push(2);
		sStack.push(3);
		sStack.push(4);
		sStack.push(5);
		sStack.push(6);
		sStack.push(3);
		sStack.print();
		
		sStack.pop();
		sStack.pop();
		sStack.pop();
		sStack.pop();
		sStack.print();
		
		System.out.println("取栈顶元素:"+sStack.getTop());
		sStack.print();
	}

}

  

目录
相关文章
|
6月前
|
存储 算法 Java
惊!Java程序员必看:JVM调优揭秘,堆溢出、栈溢出如何巧妙化解?
【8月更文挑战第29天】在Java领域,JVM是代码运行的基础,但需适当调优以发挥最佳性能。本文探讨了JVM中常见的堆溢出和栈溢出问题及其解决方法。堆溢出发生在堆空间不足时,可通过增加堆空间、优化代码及释放对象解决;栈溢出则因递归调用过深或线程过多引起,调整栈大小、优化算法和使用线程池可有效应对。通过合理配置和调优JVM,可确保Java应用稳定高效运行。
177 4
|
2月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
93 5
|
7月前
|
存储 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
85 0
|
3月前
|
存储 算法 Java
🧠Java零基础 - Java栈(Stack)详解
【10月更文挑战第17天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
96 2
|
4月前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
48 2
|
6月前
|
Java 索引
java中的栈(利用数组实现栈)
这篇文章通过Java代码示例介绍了如何使用数组实现栈操作,包括栈的初始化、入栈、出栈、判断栈满和空以及遍历栈的方法。
java中的栈(利用数组实现栈)
|
7月前
|
Java 运维
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
85 2
|
7月前
|
存储 安全 Java
Java面试题:在JVM中,堆和栈有什么区别?请详细解释说明,要深入到底层知识
Java面试题:在JVM中,堆和栈有什么区别?请详细解释说明,要深入到底层知识
112 3
|
7月前
|
存储 缓存 监控
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
78 3
|
7月前
|
存储 Java
深入理解Java中的堆内存与栈内存分配
深入理解Java中的堆内存与栈内存分配

热门文章

最新文章