本篇文章給大家帶來了java的相關知識,其中主要介紹了關于棧的相關問題,包括了棧的基本操作、棧的方法和屬性、棧的兩種實現方式等等,希望對大家有幫助。
推薦學習:《java學習教程》
1.棧的概念
棧(stack)又名堆棧,作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。
它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。棧具有先進后出的特性。
2.棧的基本操作
建棧:在使用棧之前,先建一個空棧
進棧,壓棧:往棧里面添加新元素
出棧:刪除棧頂元素
讀棧:查詢當前棧頂的元素
獲取棧的大小,清空棧。。。
3.棧的方法和屬性
Push為入棧
Pop為出棧
4.棧的兩種實現方式
① 數組(順序表)
數組必須事先定義固定的長度(元素個數)
② 鏈表
鏈表可以看成是一個一個小房間組成的,每個房間都靠指針來指向下個房間,它是靠指針來關聯指向的鏈表是物理存儲單元上非連續的、非順序的存儲結構,數據元素的邏輯順序是通過鏈表的指針地址實現,每個元素包含兩個結點,一個是存儲元素的數據域 (內存空間),另一個是指向下一個結點地址的指針域。根據指針的指向,鏈表能形成不同的結構,例如單鏈表,雙向鏈表,循環鏈表等
5.數組與鏈表的區別
數組
優點:
1、按照索引查詢元素速度快
2、按照索引遍歷數組方便
缺點:
1,事先定義固定的長度(元素個數)
2,不能適應數據動態地增減的情況。
當數據增加時,可能超出原先定義的元素個數,造成數組越界;
當數據減少時,造成內存浪費.
鏈表
優點:
1,不需要初始化容量,可以任意加減元素;
2,添加或者刪除元素時只需要改變前后兩個元素結點的指針域指向地址即可,所以添加,刪除很快
缺點:
1, 因為含有大量的指針域,占用空間較大; 查找元素需要遍歷鏈表來查找,非常耗時。
對于想要快速訪問數據,不經常有插入和刪除元素的時候,選擇數組 數據量較小,需要頻繁增加,刪除操作的場景
而對訪問元素時的效率沒有很高要求的話,選擇鏈表
6.棧的作用
6.1.保存局部變量:
函數里面也有可能要使用到局部變量,而不能總是用全局變量。則局部變量存儲到哪里合適,即不能讓函數嵌套的時候有沖突,又要注重效率。
6.2參數傳遞
傳遞參數的目的,是為了代碼可以重用,讓一種方法可以應用到