這篇筆記主要寫棧和佇列,因為他們的特點是相反的
一、棧特點:先進後出,類似於子彈入彈夾,先進去的子彈最後才發射
這裡也使用陣列來模擬一下,有四個方法,壓棧,取棧,檢視棧頂,是否為空
//測試類棧的底層我們使用陣列來儲存資料
int elements;
public
stacktest1()
//壓棧(壓入元素)
public
void push(int
element)
//把新增的元素放入新陣列中
newarr[elements.length] =element;
//使用新陣列替換久陣列
elements =newarr;
}//取出棧頂元素
public
intpop()
//取出陣列的最後乙個元素
int element = elements[elements.length-1];
//建立乙個新的陣列
int newarr = new
int[elements.length-1];
//把原陣列中除了最後乙個元素的其他元素都放在新陣列中
for(int i = 0;i)
//替換陣列
elements =newarr;
//返回棧頂元素
return
element;
}//檢視棧頂元素
public
intpeek()
//判斷棧是否為空
public
boolean
isempty()
//結果:建立乙個棧
stacktest1 ms = new
stacktest1();
//壓入資料
ms.push(9);
ms.push(8);
ms.push(7);
//出棧
system.out.println(ms.pop());
//檢視棧頂元素
system.out.println(ms.peek());
//檢視棧是否為空
system.out.println(ms.isempty());
在j**a中集合vector的子類就是stack
二、佇列
特點:先進先出,就跟我們日常生活的排隊一樣
**演示:也用陣列演示,這裡寫了三個方法,入隊,出隊,是否為空
int測試類elements;
public
queuetest()
//入隊
public
void add(int
element)
//把新增的元素放入新陣列中
newarr[elements.length] =element;
//使用新陣列替換久陣列
elements =newarr;
}//出隊
public
intpoll()
//替換陣列
elements =newarr;
return
element;
}//判斷佇列是否為空
public
boolean
isempty()
//結果建立乙個佇列
queuetest qt = new
queuetest();
//入隊
qt.add(9);
qt.add(8);
qt.add(7);
//出隊
system.out.println(qt.poll());
//是否為空
system.out.println(qt.isempty());
system.out.println(qt.poll());
system.out.println(qt.poll());
system.out.println(qt.isempty());
在j**a中,也有佇列就是queue介面,和list、set介面並列
資料結構(二) 棧棧與佇列
棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧頂 top 它是後進先出 lifo 的。對棧的基本操作只有push 進棧 和pop 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。實現 利用乙個單鏈表來實現棧的資料結構。而且,因為我們都只針對棧頂元素進行操作,...
佇列 棧(資料結構與演算法)
佇列是一種先進先出 fifo 的資料結構,從隊尾進,從隊頭出 在 fifo 資料結構中,將首先處理新增到佇列中的第乙個元素。如上圖所示,佇列是典型的 fifo 資料結構。插入 insert 操作也稱作入隊 enqueue 新元素始終被新增在佇列的末尾。刪除 delete 操作也被稱為出隊 deque...
資料結構與演算法(棧與佇列)
棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,他的特點在於只能允許在容器的一端 稱為棧頂端指標,英語top 進行加入資料 英語push 和輸出資料 英語pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問...