簡體   English   中英

理解棧(數據結構)、棧類、鏈表——java?

[英]Understanding stack(data structure), stack class, linked list - java?

我正在嘗試了解數據結構和 ADT。 到目前為止,我已經閱讀了大量資源,但我並沒有清楚地了解其中的區別。

所以我的理解是堆棧,鏈表和隊列是數據結構,Java中有名為Stack,Linkedlist作為ADT的類來使用這些數據結構。 但是有些書或資源說堆棧是一個集合,而其他資源則說堆棧是數據結構。 我對所有差異感到非常困惑,並且對如何使用鏈表實現堆棧感到迷茫。

有人可以解釋一下讓我更清楚嗎? 我知道這將是非常基本的問題,但我真的需要了解!

非常感謝!

歡迎來到編程世界。 每天一個新名詞。 ;-)

當您從與編程語言無關的角度學習時,堆棧是一種邏輯結構,具有推送和彈出等操作。 它是一個抽象,一個數學概念,它是一個數據結構。

現在,當我們談論特定的編程語言(例如 Java)時,Sun 開發人員會將幾個常用的 DATA STRUCTURES 實現放入他們稱為集合的組中。 在 Java 世界中,集合是一個概念,它也有 Java 類( http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html ),所有這些結構都繼承自,稱為 AbstractCollection ,它還實現了一個名為 Collection ( http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html ) 的接口。

因此,概念堆棧的 Java 實現也稱為堆棧,但正如您從文檔中看到的,CLASS 堆棧繼承自 AbstractCollection(請參閱http://docs.oracle.com/javase/7/docs/api/java /util/Stack.html ),因此,它是一個 Java 集合。

也許你會發現這里的解釋很有用。 它們帶有漂亮的動畫(作為 java 小程序)。

堆棧是一種特殊類型的集合。 它是一種數據結構。

堆棧是一種線性數據結構,其中您擁有一個又一個項目。

一個堆棧只能做三件事:

  1. 推送 - 將數據粘貼到收集的末尾。
  2. 窺視 - 僅查看該系列的最后一個項目。
  3. 彈出 - 刪除集合的最后一個項目。

您不能在中間或開頭插入。 除了最后一項之外,您無法查看任何項目(第一項和任何中間項)。

堆棧也稱為“后進先出”

為什么會有這樣的“限制”? 在現實生活中有一些場景會發生這種情況。 在自助餐中,員工將一個盤子疊在一起,最上面的盤子(后進)是顧客拿出的盤子(先出)。

我無法提供太多細節,但是當您按操作順序進行計算時,堆棧很有用(甚至至關重要)(您可能會獲得該編程任務,因此您不能依賴計算器),以及何時你想在網絡中找到最短的路線(例如,找到你和名人之間最短的 Facebook 好友路徑)。

數據結構是一種組織數據的方式,以便可以有效地使用它。 這主要包括可以存儲什么類型的數據以及如何存儲和處理數據。

示例 1:我們可以將相同數據類型的元素列表存儲在數組數據結構中,其中可以使用數組的索引訪問元素。

示例 2:我們可以將相同數據類型的元素列表存儲在堆棧數據結構中,其中元素可以采用后進先出的方式訪問。

抽象數據類型是您指定所需行為但不指定實現的數據類型。 例如,Java 中的接口,定義要執行的操作和預期的行為,但實現是隱藏的。

Java 中已經定義了類,它們為您提供數據結構的行為。 其中一個類是java.util.Stack類,它為您提供可以在 Stack 上執行的操作,但隱藏了這些操作的實現細節。 您可以在我的博客https://hetalrachh.home.blog/2019/12/25/stack-data-structure/上查看有關java.util.Stack類的更多信息。

堆棧可以通過多種方式實現,這意味着使用不同的數據結構(如數組和鏈表)實現后進先出行為。 您可以在我的博客http://hetalrachh.home.blog/2020/01/12/stack-implementation-using-array-and-linkedlist-in-java/上找到帶有圖表的詳細說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM