public
static
class
arraystack
array =
newinteger
[initsize]
; size =0;
}//檢視棧頂元素
public integer peek()
return array[size -1]
;}//壓棧
public
void
push
(int num)
array[size++
]= num;
}//彈出棧
public integer pop()
return array[
--size];}
}
public
static
class
arrayqueue
arr =
newinteger
[initsize]
; size =0;
start =0;
end =0;
}//檢視佇列的首元素
public integer peek()
return arr[start];}
//往陣列中存入元素
public
void
push
(integer num)
//如果可以進行到這裡,說明陣列中有剩餘位置
//首先size++
size++
;//end所指的位置為新進入的元素的位置
arr[end]
= num;
//如果end指向陣列中最後乙個位置,end指向0位置,否則end+1
end = end == arr.length-1?
0: end+1;
}//獲取佇列的第乙個元素
public integer pop()
//程式執行到這裡,說明size>0
//首先size--
size--
;//記錄start所指的位置
int tmp = start;
//判斷start所指的位置是否為陣列的最後乙個位置,如果是,start從0位置開始,否則start+1
start = start == arr.length -1?
0: start +1;
return arr[tmp];}
}
思路:設計兩個棧,同時壓棧,第乙個棧push的元素全部存入,第二個棧先存入第乙個元素,當存入第二個元素時,與第個元素相比較,如果第乙個元素較小,則不存入第二個元素,將第乙個元素再次存入一遍,依次類推…,這樣第二個棧的 棧首就為最小值
public
static
class
mystack
public
void
push
(int newnum)
else
if(newnum <
this
.getmin()
)else
//另乙個棧依次壓入元素
this
.stackdata.
push
(newnum);}
public
intpop()
//彈出棧首元素兩個棧同時進行,保證stackmin中為剩餘元素的最小值
this
.stackmin.
pop();
return
this
.stackdata.
pop();
}public
intgetmin()
return
this
.stackmin.
peek()
;}}
用陣列結構實現大小固定的佇列和棧
題目 用陣列結構實現大小固定的佇列和棧 分析 如果強行限制給出乙個長度為n的陣列,設計乙個大小為n的棧,如果超過這個大小,可以報錯。棧 先進後出 佇列 先進先出 public class array to stack queue arr new integer initsize size 0 pub...
用陣列結構實現大小固定的佇列和棧
棧 用乙個變數index表示下一次壓棧應該壓到 class arraystack stack new int size public int peek return stack index public void push int i stack index i public int pop int...
week 2 用陣列結構實現大小固定的佇列和棧
topic requirement 無 thoughts 對於用陣列結構實現大小固定的棧 有初始化棧 入棧 出棧 返回棧頂等功能 對於用陣列結構實現佇列 有初始化佇列 進佇列,出佇列等操作 code public class array to stack queue arr new integer ...