用陣列結構實現大小固定的佇列和棧

2021-09-26 19:32:44 字數 2002 閱讀 5602

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 ...