目錄
javascript有資料結構嗎
首頁 web前端 前端問答 javascript有資料結構嗎

javascript有資料結構嗎

Jun 17, 2022 am 11:01 AM
javascript

javascript中有資料結構,資料結構是指彼此之間存在一種或多種特定關係的資料元素集合;資料結構能夠有效的管理資料對象,提升運算效能,JavaScript中的資料結構有列表、棧、佇列、鍊錶、字典、雜湊、圖和二元查找樹。

javascript有資料結構嗎

本教學操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript有資料結構嗎

javascript有資料結構

#資料結構:列表、堆疊、佇列、鍊錶、字典、雜湊、圖和二元查找樹

清單

在日常生活中,人們經常使用清單:待辦事項清單、購物清單、最佳十名榜單等等。而電腦程式也在使用列表,在下面的條件下,選擇列表作為資料結構就顯得特別有用:

資料結構較為簡單

不需要在一個長序列中尋找元素,或者對其進行排序

反之,如果資料結構非常複雜,列表的作用就沒有那麼大了。

堆疊

堆疊是一種特殊的列表,堆疊內的元素只能透過列表的一端訪問,這一端稱為棧頂。想像一下,我們平常在飯館見到的一疊盤子就是現實世界常見的棧的例子,只能從最上面取盤子,盤子洗乾淨後,也只能放在最上面。棧被稱為一種後入先出的資料結構。是一種高效率的資料結構,因為資料只能在堆疊頂部新增或刪除,所以這樣的操作很快。

使用條件:

只要資料的保存滿足後入先出或先進後出的原理,都優先考慮使用堆疊

##佇列

隊列也是一種列表,不同的是隊列只能在隊尾插入元素,在隊首刪除元素。想像一下,我們在銀行排隊,排在最前面的人第一個辦理業務,而後面來的人只能排在隊伍的後面,直到輪到他們為止。

使用條件:

只要資料的保存符合先進先出、後入後出的原理,都優先考慮使用佇列

常見應用程式場景:

佇列主要用在和時間有關的地方,特別是作業系統中,佇列是實作多任務的重要機制

訊息機制可以透過佇列來實現,行程調度也是使用佇列來實作

鍊錶

鍊錶也是一種列表,為什麼需要出現鍊錶,JavaScript中數組的主要問題時,它們被實現成了對象,與其他語言(如C 和Java)的陣列相對,效率很低。如果你發現數組在實際使用時很慢,就可以考慮使用鍊錶來取代它。

使用條件:

鍊錶幾乎可以用在任何可以使用一維陣列的情況中。如果需要隨機訪問,數組仍然是更好的選擇。

字典

字典是一種以鍵-值對行駛儲存資料的資料結構,JavaScript中的Object類別就是以字典的形式設計的。 JavaScript可以透過實作字典類,讓這種字典類型的物件使用起來更簡單,字典可以實作物件擁有的常見功能,並且相應地拓展自己想要的功能,而物件在JavaScript編寫中隨處可見,所以字典的作用也異常明顯了。

雜湊

雜湊(也稱為雜湊表)是一種的常用的陣列儲存技術,散列後的數組可以快速插入或取用。散列使​​用的資料結構叫做散列表。在散列表上插入、刪除和取用資料都非常快,但對於查找操作來說卻效率低下,例如查找一組數組中的最大值和最小值。這些操作需要求助於其他資料結構,例如下面介紹的二元查找樹。

散列表在JavaScript中可以基礎陣列去進行設計。數組的長度是預先設定的,所有元素根據和該元素對應的鍵,保存在數組的特定位置,這裡的鍵和物件的鍵是類型的概念。使用散列表儲存數組時,透過一個雜湊函數將鍵映射為一個數字,這個數字的範圍是0到散列表的長度。

即使使用一個高效的雜湊函數,依然存在將兩個鍵映射為同一個值得可能,這種現象叫做碰撞。常見碰撞的處理方法有:開鏈法與線性偵測法(具體概念有興趣的可以網路上自信了解)

使用條件:

可以用於資料的插入、刪除、取用,不適用於查找資料

圖由邊的集合及頂點的集合組成。地圖是我們身邊很常見的現實場景,例如每兩個城鎮都由某種道路相連。上面的每個城鎮可以看作一個頂點,連接城鎮的道路就是邊。邊由頂點對(v1, v2)定義,v1和v2分別是圖中的兩個頂點。頂點也有權重,也成為成本。如果一個圖的頂點對是有序的,則稱之為有向圖(例如常見的流程圖),反之,稱之為無序圖。

使用場景(用圖表對現實中的系統建模):

交通系統,可以用頂點表示街道的十字路口,邊可以表示街道。加權的邊可以表示限速或車道的數量。可以用此系統判斷最佳路線及最有可能塞車的街道。

任何運輸系統都可以用圖來建模。例如,航空公司可以用圖來為其飛行系統建模。將每個機場看成頂點,將經過兩個頂點的每條航線視為一條邊。加權的邊可以表示從一個機場到另一個機場的航班成本,或兩個機場間的距離,這取決於建模的物件是什麼。

搜尋圖的演算法主要有兩種: 深度優先搜尋和廣度優先搜尋。

二元樹和二元查找樹

#樹是電腦科學中常用到的一種資料結構。樹是一種非線性的資料結構,以分層的方式儲存資料。

二元樹每個節點的子節點不允許超過兩個。一個父節點的兩個子節點分別稱為左節點和右節點,透過將子節點的個數限定為2,可以寫出高效率的程式在樹中插入、尋找和刪除資料。

二元查找樹(BST)是一種特殊的二元樹,相對較小的值保存在左節點中,較大的值保存在右節點中。這項特性使得查找的效率很高,對於數值型和非數值型的數據,例如單字和字串,都是如此。

二元尋找樹實作方法

function Node(data, left, right) { // 创建节点
  this.data = data;
  this.left = left;
  this.right = right;
  this.show = show
}
function show () { // 显示树的数据
  return this.data
}
function BST () { // 二叉查找树类
  this.root = null;
  this.insert = insert;
  this.inOrder = inOrder; // inOrder是遍历BST的方式
}
function insert (data) { // 向树中插入数据
  var n = new Node(data, null, null)
  if (this.root == null) {
    this.root = n;
  } else {
    var current = this.root;
    var parent;
    while (true) {
  parent = current
  if (data < current.data) {
current = current.left;
if (current == null) {
  parent.left = n;
  break;
}
  } else {
current = current.right;
if (current == null) {
  parent.right = n;
  break;
}
  }
    }
  }
}
登入後複製

遍歷BST的方式有三種:中序遍歷(以升序訪問樹中所有節點,先訪問左節點,再訪問根節點,最後訪問右節點)、先序遍歷(先訪問根節點,再以同樣的方式訪問左節點和右節點)、後序遍歷(先訪問葉子節點,從左子樹到右子樹,再到根節點)

【相關推薦:javascript影片教學web前端

以上是javascript有資料結構嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

See all articles