7.5.3_1處理沖突的方法-拉鏈法

知識總覽:

拉鏈法:

開始散列表中沒有存儲任何數據元素即散列地址上的元素是空的,散列地址可以視為鏈表的頭指針,即沒有插入任何元素前鏈表的頭指針是空的。一個散列地址對應一個鏈表,散列地址上實際沒有存數據元素,所有的數據元素都存儲在鏈表上了。

散列表使用拉鏈法插入元素步驟:

1.根據散列函數算出數據元素要插入的散列地址

2.將新元素插入散列地址對應的鏈表,可使用頭插法(即把元素每次都插入在鏈表的頭部)或尾插法(即把元素每次都插入在鏈表的尾部)。以下例子默認使用頭插法

如開始插入19元素,散列函數計算得出散列地址=6,頭插法插在鏈表頭部,后來又插入84數據元素,散列函數計算出的散列地址也是6,頭插法則把84插入在鏈表頭部,即84在19上部。。。。。。

散列表使用拉鏈法查找元素:

?步驟:

1.根據散列函數,計算目標元素的散列地址,找到對應鏈表

2.順序查找鏈表,開始進行關鍵字比較

如查找目標元素27,由散列函數計算出的散列地址為1,從1對應上的鏈表從頭開始順序查找,先比較79,不相等繼續比較27,相等,關鍵字比較2次查找成功,即查找長度為2

如查找目標元素66,由散列函數計算出的散列地址為1,從1對應上的鏈表從頭開始順序查找,先比較79,不相等繼續比較27,不相等繼續比較1,不相等繼續比較14,鏈表上的元素比較完了也沒找到66,則查找失敗,關鍵字比較次數4次,查找長度=4

如查找目標元素21,由散列函數計算出的散列地址為8,8位置上對應的空鏈表即NULL,則查找失敗,因為是空鏈表NULL沒有任何關鍵字即沒有值,所以關鍵字的比較次數為0次,即查找長度為0,有的教材上也說是1次,在考試中如果么有特別說明就認為是比較0次

散列表使用拉鏈法刪除元素:

?步驟:

1.根據散列函數,計算目標元素的散列地址,找到對應鏈表

2.順序查找鏈表,開始進行關鍵字比較,在鏈表中找到目標元素了,再根據鏈表特性刪除

只要能在鏈表中找到這個元素都能刪除。

如下刪除目標元素27,由散列函數計算出的散列地址為1,從1對應上的鏈表從頭開始順序查找,先比較79,不相等繼續比較27,相等,關鍵字查找成功,然后再刪除27(跟鏈表的刪除一樣),修改對應的指針

如下刪除目標元素20,由散列函數計算出的散列地址為7,從7對應上的鏈表從頭開始順序查找,先比較20相等,刪除20元素,然后把7位置上的鏈頭指針置為空

如下刪除目標元素66,由散列函數計算出的散列地址為1,從1對應上的鏈表從頭開始順序查找,找完了也沒找到66,刪除失敗

?知識回顧:

拓展:

散列表中頭插法插入元素時,每次插入的元素都是無序的,導致在散列表查找元素時,只能順序的在鏈表一個一個元素挨個比較,效率低,則在鏈表插入時可以比較元素大小,讓鏈表插入的時候保持一個有序的狀態,根據大小把元素插入到鏈表對應位置,即在插入時也排序,則在查找時效率會高一些

?

又水一篇。。。。。。。。。。以上純屬個人理解。。。。。。。。 。。。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85789.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙運動項目開發:項目運行環境切換器

##鴻蒙核心技術##運動開發# 在開發鴻蒙運動項目時,管理不同運行環境(如開發環境、測試環境、生產環境)是一個常見的需求。通過合理地切換運行環境,開發者可以方便地進行調試、測試和部署。本文將介紹如何實現一個項目運行環境切換…

Linux內核中安全創建套接字:為何inet_create未導出及正確替代方案

引言 在Linux內核開發中,當驅動程序需要創建網絡套接字時,開發者常會遇到一個關鍵問題:核心函數inet_create(負責初始化IPv4套接字)并未導出到內核符號表。本文深入剖析這一設計決策背后的邏輯,并提供驅動程序安全創建套接字的實踐方案。 一、inet_create未導出的深層原…

63、不同路徑II

題目 解答: 初始化和特殊情況比較麻煩的dp obstacleGrid(0,0)1的,直接return 0即可。入口都被堵住了還怎么走。 mn1情況,直接判斷 第一行初始化:dp[1][0]->dp[i][0] 碰到有障礙物的,從當前格子開始到末尾全部置…

wx小程序登錄設置角色

背景。pc端登錄后在訪問業務鏈接時可以根據固定獲取用戶的方法LoginUser user LoginHelper.getLoginUser(); 獲取到用戶信息。但wx端登錄后無法獲取。原因處在登陸時對用戶信息的設置方面pc端和小程序端登錄沒有使用相同的登錄方法。排除得知wx端小程序登錄時沒有設置角色。所…

MySQL5.7 慢查詢SQL語句集合

文章目錄 1. 按平均執行時間排序的慢查詢2. 按總執行時長排序的慢查詢3. MySQL 5.7 慢查詢配置檢查4. 掃描行數分析(找出全表掃描)5. 高頻執行的慢查詢6. 當前正在執行的查詢7. 慢查詢統計匯總8. 表結構和索引分析8.1 表索引詳情查詢8.2 表大小統計 1. 按…

MySQL學習(1)——基礎庫操作

歡迎來到博主的專欄:MySQL學習 博主ID:代碼小豪 文章目錄 數據庫原理基礎庫操作增刪數據庫數據庫編碼與校驗規則驗證不同的校驗規則對于庫中數據的影響 備份與恢復數據庫 數據庫原理 mysql版本:mysql8.0 操作系統:ubuntu22.4 為了減少由于環境配置以及權限限制帶來的使用問題&…

C++法則12:右值引用的核心目的:支持移動語義(Move Semantics)

C法則12:右值引用的核心目的:支持移動語義(Move Semantics) 右值引用(Rvalue Reference)是C11引入的最重要特性之一,其主要設計目的就是支持移動語義(Move Semantics)。 …

【LLM學習筆記4】使用LangChain開發應用程序(上)

目錄 前言一、模型、提示和解析器(model、prompt、parsers)二、儲存三、模型鏈四、基于文檔的問答1.使用向量存儲查詢2. 結合表征模型和向量存儲使用檢索問答鏈回答問題 前言 在前面兩部分,我們分別學習了大語言模型的基礎使用準則&#xff…

Negative Contrastive Estimation Negative Sampling

1. 基本概念與問題背景 1.1 大規模分類問題 在自然語言處理中,給定上下文 c c c預測單詞 w w w的條件概率為: P ( w ∣ c ) exp ? ( s θ ( w , c ) ) ∑ w ′ ∈ V exp ? ( s θ ( w ′ , c ) ) P(w|c) \frac{\exp(s_\theta(w,c))}{\sum_{w\in V…

Flink SQL Connector Kafka 核心參數全解析與實戰指南

Flink SQL Connector Kafka 是連接Flink SQL與Kafka的核心組件,通過將Kafka主題抽象為表結構,允許用戶使用標準SQL語句完成數據讀寫操作。本文基于Apache Flink官方文檔(2.0版本),系統梳理從表定義、參數配置到實戰調優…

vscode內嵌瀏覽器實時預覽vue項目

安裝插件 web Preview 啟動vue項目 打開預覽 ctrl shift p 之后輸入并選擇 Open Web Preview 即可看到預覽窗口,但此時明明我的頁面是有內容的,但是窗口卻空白的。 因為默認訪問端口是3000,我們將其修改為vue項目默認的5173端口即可。 點…

計算機網絡:(四)物理層的基本概念,數據通信的基礎知識,物理層下面的傳輸媒體

計算機網絡:(四)物理層的基本概念,數據通信的基礎知識,物理層下面的傳輸媒體 前言一、物理層的基本概念1. 什么是物理層2. 物理層的核心使命3. 物理層的四大特性 二、數據通信的基礎知識1. 數據通信系統的基本模型1.1 …

Linux系統性能優化

目錄 Linux系統性能優化 一、性能優化概述 二、性能監控工具 1. 基礎工具 2. 高級工具 三、子系統優化策略 1. CPU優化 2. 內存優化 3. 磁盤I/O優化 4. 網絡優化 四、資源限制優化 1. ulimit 2. cgroups(控制組) 五、安全與注意事項 六、…

【streamlit streamlit中 顯示 mermaid 流程圖有兩種方式】

streamlit中顯示mermaid 流程圖有兩種方式 mermaind示例 code """ flowchart LRmarkdown["This **is** _Markdown_"]newLines["Line1Line 2Line 3"]markdown --> newLinesmarkdown["This **is** _Markdown_"]newLines[&quo…

Rust調用 DeepSeek API

Rust 實現類似 DeepSeek 的搜索工具 使用 Rust 構建一個高效、高性能的搜索工具需要結合異步 I/O、索引結構和查詢優化。以下是一個簡化實現的框架: 核心組件設計 索引結構 use std::collections::{HashMap, HashSet}; use tantivy::schema::{Schema, TEXT, STORED}; use …

Unity3D仿星露谷物語開發69之動作聲音

1、目標 Player動作時產生的聲音,比如砍倒樹木、砸石頭。 2、修復NPC快速行進的bug(與本節無關) 修改NPCMovement.cs腳本的MoveToGridPositionRoutine方法。 確保npcCalculatedSpeed的速度不少于最慢速度。 原代碼: 修改后的…

【Node.js 的底層實現機制】從事件驅動到異步 I/O

簡介 Node.js 作為 JavaScript 后端運行環境,其核心優勢在于高并發處理能力和非阻塞 I/O 模型。 特點: 高并發處理:單線程事件循環高效處理大量并發連接I/O 密集型任務:非阻塞 I/O 模型避免線程切換開銷,不適合 CPU…

nginx服務器配置時遇到的一些問題

京東云 CentOS 8.2 64位 Nginx配置文件修改后需要重啟或重載服務的原因以及不重啟的后果: ??工作進程不主動重讀配置??: Nginx采用master-worker多進程架構。master進程讀取配置文件并管理worker進程,worker進程處理實際請求。修改配置…

【論文閱讀 | CVPR 2024 |Fusion-Mamba :用于跨模態目標檢測】

論文閱讀 | CVPR 2024 |Fusion-Mamba :用于跨模態目標檢測 1.摘要&&引言2.方法2.1 預備知識2.2 Fusion-Mamba2.2.1 架構特征提取與多模態融合(FMB模塊)FMB的應用與輸出2.2.2 關鍵組件3.2.2.1 SSCS 模塊:淺層跨模態特征交互…

Nginx-Ingress-Controller自定義端口實現TCP/UDP轉發

背景1 使用deployment部署一個http服務,配合使用ingresstls的解析在ingress終止。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:name: test.comnamespace: rcs-netswitch-prod spec:defaultBackend:service:name: rcs-netswitch-prodpo…