求栈的长度java代码 求栈长度的算法

java 每个函数的栈空间大小是?在Java程序运行时,各个栈空间大小如下:
(1) 寄存器 。最快的保存区域 , 位于处理器内部,数量十分有限 , 它是根据需要由编译器分配 。我们对此没有直接的控制权.
(2) 栈(stack) 。驻留于常规RAM(随机访问存储器)区域,这是一种特别快、特别有效的数据保存方式,仅次于寄存器 。创建程序时 , Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间” 。这失去了一定的灵活性,因此对象句柄是存放在栈中,但Java对象并不放到其中 。
(3) 堆(heap) 。保存了Java对象 。和栈不同,它最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间 , 也不必知道存储的数据要在堆里停留多长的时间 。因此,用堆保存数据时会得到更大的灵活性 。要求创建一个对象时 , 只需用new命令编制相关的代码即可 。执行这些代码时,会在堆里自动进行数据的保存 。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!
(4) 静态存储 。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里) 。程序运行期间,静态存储的数据将随时等候调用 。可用static关键字指出一个对象的特定元素是静态的 。但Java对象本身永远都不会置入静态存储空间 。
(5) 常数存储 。常数值通常直接置于程序代码内部 。这样做是安全的,因为它们永远都不会改变 。有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM) 。
(6) 非RAM存储 。数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外 。
java测栈的长度的代码怎么写?假设栈叫stk
stk.size() 就是栈求栈的长度java代码的长度
用java实现数据结构“栈Java栈的实现
public class MyStack {//定义一个堆栈类
int[] array;//用int数组来保存数据求栈的长度java代码,根据需要可以换类型
int s_size;//定义堆栈的宽度
public MyStack(int i){//定义一个带参数构造器
array=new int[i];//动态定义数组的长度
s_size=0;//堆栈的默认宽度为0
}
public MyStack(){//默认构造器
this(50);//默认构造器可容纳50个元素
}
public void push(int i){ //压栈
array[this.s_size]=i;
this.s_size;
}
public int pop(){//从堆栈中取元素求栈的长度java代码,从栈顶开始取
if(this.s_size!=0){
int t=array[s_size-1];//用中间变量保存栈顶的元素
array[s_size-1]=0;//取完元素该位置设为0
s_size--;//栈的大小减1
return t;//返回栈顶元素
}else{
System.out.println("This stack is empty");//当栈为空时显示提示信息求栈的长度java代码,返回0
return 0;
}
}
public boolean isEmpty(){//判断栈是否为空
return this.s_size==0;
}
public int top(){//从栈顶取值 , 功能和 pop() 方法一样
if(!this.isEmpty()){
int t=array[this.s_size-1];
array[this.s_size-1]=0;
this.s_size--;
return t;
}else{
System.out.println("This stack is empty!");
return 0;
}
}
public void printAll(){//打印出堆栈中的所有元素的值 , 不是取出 , 元素依然在堆栈里
if(!this.isEmpty()){
for(int i=this.s_size - 1;i=0;i--){
System.out.println(array[i]);
}
}
}
//下面是测试代码
public static void main(String[] args){
MyStack stack=new MyStack();
stack.push(4);
stack.push(5);
stack.push(6);
stack.push(7);
//System.out.println(stack.isEmpty());
stack.printAll();
System.out.println("===========");
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
}
}
用java编写出来:用数组实现一个栈public class Stack {
private Object[] stack;
//这个不需要;
//private int top = 0; //初始化栈顶
//这个也不需要;
//写一个栈出来,最好是可以动态的,可以自己改变大小的,即数组的长度;
//private int size = 0; // 初始化大小
//元素个数;
private int size;
//默认长度为10;
public Stack(){
this(10);
}
//也可以自己设置长度,即容量;
public Stack(int len){
stack = new Object[len];
}
//返回元素个数;
public int size(){
return size;
}
//返回数组长度,即容量;
public int capacity(){
return stack.length;
}
//实现动态的数组;
public void ensureCapacity(){
if(size() == capacity()){
Object[] newStack = new Object[size() * 3 / 21];
System.arraycopy(stack, 0, newStack, 0, size());
stack = newStack;
}
}
//入栈;
public void push(Object o){
size;
ensureCapacity();
stack[size - 1] = o;
}
/*
public void push(Object object) {
if (isFull()) {
System.out.println("栈满!入栈失败");
}
stack[top] = object;
}
*/
//判空;
public boolean isEmpty(){
return size == 0;
}
//出栈;
public Object pop(){
//首先要判空;
if(isEmpty()){
throw new ArrayIndexOutOfBoundsException("不能为空");
}
Object o = stack[--size];
stack[size] = null;
return o;
}
/*
// 出栈
public Object pop() {
Object object = stack[--top];
stack[top] = null;
return object;
}
*/
/*
// 计算栈当前大小
public int size() {
return top;
}
// 判断是否是空栈
public boolean isEmpey() {
return top == 0;
}
// 判断是否栈满
public boolean isFull() {
【求栈的长度java代码 求栈长度的算法】return top = size;
}
public Stack(int size) {
this.size = size;
}
*/
public static void main(String[] args) {
Stack stack = new Stack(3);
String[] data = https://www.04ip.com/post/new String[] {"a", "b", "c" };
for (int i = 0; idata.length; i) {
stack.push(data[i]);
System.out.println(data[i]"");
}
System.out.println("***********");
while (!stack.isEmpty()) {
System.out.println(stack.pop()"");
}
//}
}
}
你自己对比一下,我是在你的里面修改的
关于求栈的长度java代码和求栈长度的算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读