陣列實現固定大小佇列和棧

2021-08-30 17:45:36 字數 1485 閱讀 4445

棧的資料結構是先進後出,佇列的資料結構是先進先出。

陣列實現固定大小棧的思想是:先建立乙個固定大小的陣列和乙個size為0的常數,這個常數用來判斷棧是否滿或者空。當push時,檢視size的大小是否為大於陣列的長度,大於就給使用者拋異常,否則就插入陣列的size位置,size++。而pop的時候相反,檢視size的大小是否為小於陣列的長度,小於就給使用者拋異常,否則就把size-1的位置給彈出,size=size-1。獲取棧頂元素就直接返回陣列的size-1位置的數。

陣列實現固定大小佇列的思想是:建立乙個固定大小的陣列和三個常數,size作用是計算插入佇列的個數,last的作用是插入佇列時使用,first的作用是彈出佇列時使用。插入佇列時先判斷size是否為陣列的長度,相等就不能插入佇列,否則就size的大小加一,把數插入到陣列的last位置,再判斷last的值是否為陣列大小減1,是的話就給last賦值為0,否則last自加1。彈出佇列也要先判斷size是否為0,為0則不能彈出,否則就size自減1,first位置上的值彈出,再給first賦值,若first值為陣列長度減1,則賦值為0,否則first自加1。佇列頭部的值就為first位置上的值。

**如下:

public class array_to_stack_queue 

public static class arraystack

arr = new integer[initsize];

size = 0;

} //返回棧頂元素

public integer peek()

return arr[size - 1];

} //進棧操作

public void push(int obj)

arr[size++] = obj;

} //出棧操作

public integer pop()

return arr[--size];

} }public static class arrayqueue

arr = new integer[initsize];

size = 0;

first = 0;

last = 0;

} //獲取隊頭的值

public integer peek()

return arr[first];

} //插入佇列

public void push(int obj)

size++;

arr[last] = obj;

last = last == arr.length - 1 ? 0 : last + 1;

} //彈出佇列

public integer poll()

size--;//佇列的個數減一

int tmp = first;

first = first == arr.length - 1 ? 0 : first + 1;

return arr[tmp];

} }}

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

題目 用陣列結構實現大小固定的佇列和棧 分析 如果強行限制給出乙個長度為n的陣列,設計乙個大小為n的棧,如果超過這個大小,可以報錯。棧 先進後出 佇列 先進先出 public class array to stack queue arr new integer initsize size 0 pub...

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

public static class arraystack array newinteger initsize size 0 檢視棧頂元素 public integer peek return array size 1 壓棧 public void push int num array size ...

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

棧 用乙個變數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...