java棧頂
⑴ java字元串插入和取棧頂元素的問題
1、最好先使用這個字元串作為參數構造一個StringBuilder,然後使用StringBuilder的插入字元方法插入你的字元,最後用toString得到字元串。
2、在方法的前面加個類型轉化就可以了。
⑵ java中堆和棧的意思
堆和棧都是內存空間管理結構,但是在堆上空間可以任意分配,而棧只能在棧頂分配。每個JVM只有一個堆,每個Thread都有一個棧。棧用來分配Java method中的局部變數,而實例變數則在堆上。打個比方,有一個長為10的空間[1-10],而你需要長為2的空間,如果是堆,可能是[1-2],也可能是[2-3],[3-4]...而棧只能是[1-2]。如果還不明白,參考《數據結構》《Java虛擬機規范》和《演算法分析》中的遞歸與分治。
⑶ java中堆和棧的區別
堆和棧是信息學數據結構通用名詞,不僅在Java中,C++里也有調用模板。
堆(heap)是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵樹的數組對象。堆總是滿足下列性質:
堆中某個節點的值總是不大於或不小於其父節點的值;
堆總是一棵完全樹。
將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。
堆的定義如下:n個元素的序列{k1,k2,ki,…,kn}當且僅當滿足下關系時,稱之為堆。
(ki<= k2i,ki<= k2i+1)或者(ki>= k2i,ki>= k2i+1), (i = 1,2,3,4...n/2)
若將和此次序列對應的一維數組(即以一維數組作此序列的存儲結構)看成是一個完全二叉樹,則堆的含義表明,完全二叉樹中所有非終端結點的值均不大於(或不小於)其左、右孩子結點的值。由此,若序列{k1,k2,…,kn}是堆,則堆頂元素(或完全二叉樹的根)必為序列中n個元素的最小值(或最大值)。
(摘自:http://ke..com/view/249120.htm#4)
棧(stack)又名堆棧,它是一種先進後出(FILO)的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
(摘自:http://ke..com/subview/38877/12246229.htm,有刪改)
⑷ 用java實現數據結構「棧
Java棧的實現
public class MyStack { //定義一個堆棧類
int[] array; //用int數組來保存數據,根據需要可以換類型
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(){ //從堆棧中取元素,從棧頂開始取
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"); //當棧為空時顯示提示信息,返回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());
}
}