棧的資料結構是先進後出,佇列的資料結構是先進先出。
陣列實現固定大小棧的思想是:先建立乙個固定大小的陣列和乙個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...