【數據結構】順序表的應用

目錄

一.引言? ? ? ??

二.順序表概念

三.順序表的實現

1.定義順序表

2.順序表初始化

?編輯

3.檢查空間,如果滿了,進行增容

4.順序表尾插

5.順序表尾刪

6.順序表頭插

7.順序表頭刪

?編輯

8.順序表查找

9.順序表在pos位置插入x

10.順序表刪除pos位置的值

11.順序表銷毀

12.順序表打印


一.引言? ? ? ??

????????在計算機科學中,數據結構是計算機存儲、組織數據的方式。順序表作為一種線性表,以其簡單、易用的特點,成為了許多高級數據結構的基礎。了解順序表的工作原理和實現方法,對于我們更好地理解計算機科學具有重要意義。


二.順序表概念

????????順序表(Sequential List)是一種線性表,它的特點是數據元素在物理存儲上連續,且元素之間的邏輯順序與物理順序相同。在順序表中,數據元素按照一定的順序排列,每個元素都有一個確定的位置,可以通過索引(或稱為下標)直接訪問。

以下是順序表的基本概念和特性:

  1. 數據元素:順序表中的每一個對象稱為數據元素,可以是整數、浮點數、字符或者更復雜的記錄類型。

  2. 索引(下標):順序表中的每個數據元素都有一個索引,通常從0開始計數,用于指示元素在表中的位置。

  3. 長度:順序表的長度是指表中數據元素的個數,長度可以根據需要進行動態調整,但通常有一個最大容量限制。

  4. 存儲空間:順序表通常在計算機內存中占用一段連續的存儲空間,以便于通過索引快速訪問元素。

  5. 隨機訪問:順序表支持隨機訪問,即可以在O(1)的時間復雜度內直接訪問到任意位置的元素。

  6. 順序性:順序表中的元素按照一定的順序排列,元素之間的順序關系是相鄰的,即第一個元素緊鄰第二個元素,以此類推。

順序表的主要操作包括:

  • 初始化:創建一個空的順序表。
  • 插入:在順序表的指定位置插入一個新的數據元素。
  • 刪除:從順序表中刪除指定的數據元素。
  • 查找:根據特定條件在順序表中查找數據元素。
  • 排序:對順序表中的元素進行排序。
  • 清空:將順序表中的所有元素刪除,使其變為空表。
  • 遍歷:按照順序訪問順序表中的每一個元素。

順序表的優缺點如下:

優點

  • 訪問效率高:隨機訪問能力強,訪問任意元素的時間復雜度為O(1)。
  • 存儲密度高:順序表的數據元素緊密排列,不需要額外的空間存儲元素間的關系。

缺點

  • 插入和刪除操作效率低:在順序表的中間或頭部插入或刪除元素時,可能需要移動大量元素,時間復雜度為O(n)。
  • 固定容量:通常順序表的容量是固定的,若存儲空間不足,需要進行擴容操作,這可能會導致性能下降。

順序表是實現其他復雜數據結構(如棧、隊列等)的基礎,它在算法設計和實際應用中有著廣泛的使用。? (后續也會發布用順序表來實現棧和隊列)

三.順序表的實現

????????靜態順序表只適用于確定知道需要存多少數據的場景。靜態順序表的定長數組導致N定大了,空間開多了浪費,開少了不夠用。所以現實中基本都是使用動態順序表,根據需要動態的分配空間大小,所以下面我們實現動態順序表。

1.定義順序表

????????這里使用typedef函數來講重命名為SLDateType是因為插入順序表的數據不會是固定不變的,這么做也是為了方便后續管理和更新。

2.順序表初始化

? ? ? ? 將結構體里的array指向空指針,防止其變為野指針。

3.檢查空間,如果滿了,進行增容

? ? ? ? 結構體里的capacity的主要功能就在這一板塊實現,主要是為了檢查順序表內數據是否存滿。如果滿了就使用realloc函數來再次開辟空間。(這里使用了三目操作符,不懂的小伙伴可以點擊三目操作符)

4.順序表尾插

5.順序表尾刪

? ? ? ? 此操作簡單易懂,需要注意的是這里的刪除并不是真正物理上刪除了數據,而是邏輯上減小了size的值,使print讀取不到他,來做到刪除的效果。

6.順序表頭插

7.順序表頭刪

8.順序表查找

9.順序表在pos位置插入x

10.順序表刪除pos位置的值

11.順序表銷毀

12.順序表打印

? ? ? ? 這里類型于數組的打印,都是需要循環來實現的。

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

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

相關文章

展開說說:Android頁面繪制流程源碼解析

說到Android系統View的繪制流程,大家一定知道是分為測量(Measure)、布局(Layout)和繪制(Draw)三個階段,這篇文章主要聊一聊在這三個步驟之前的源碼執行流程,頁面啟動后是…

C語言丟失精度 如何實現高精度計算

(1)int 類型舉例 int :占4個字節,也就是32位,及最大值是2^32-11024*1024*1024*4-14294967295 以上說法錯誤,因為Int是有符號類型整數,所以最高位是符號位,及int的最大值應該是2^31…

【Java】鏈表的頭插法和尾插法

頭插法 頭插法就是在已有的節點的前面插入新節點 如何實現 (1)先定義一個節點類ListNode,里面有value值和地址 public class ListNode {int value;ListNode next;public ListNode(int value){this.value value;}Overridepublic String t…

開發指南046-機構樹控件

為了簡化編程&#xff0c;平臺封裝了很多前端組件。機構樹就是常用的組件之一。 基本用法&#xff1a; import QlmOrgTree from /qlmcomponents/tree/QlmOrgTree <QlmOrgTree></QlmOrgTree> 功能&#xff1a; 根據權限和控制參數顯示機構樹。機構樹數據來源于核…

讓我們一起來看看這些強大的中國汽車品牌如何勇攀巔峰!

咱們中國的汽車品牌&#xff0c;就是這么牛&#xff01;你知道嗎&#xff1f;他們已經悄悄崛起&#xff0c;一步步向著更廣闊的海外市場進軍了。盡管這個過程可能有點坎坷&#xff0c;但是“勇敢”始終是他們前行的動力&#xff0c;推動著他們不斷向前&#xff0c;打造屬于我們…

AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理

AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理 目錄 AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理 一、簡單介紹 二、文本摘要 三、在CNN/Daily…

秋招突擊——7/9——MySQL索引的使用

文章目錄 引言正文B站網課索引基礎創建索引如何在一個表中查看索引為字符串建立索引全文索引復合索引復合索引中的排序問題索引失效的情況使用索引進行排序覆蓋索引維護索引 數據庫基礎——文檔資料學習整理創建索引刪除索引創建唯一索引索引提示復合索引聚集索引索引基數字符串…

C#基于任務的異步模式(TAP)

1、C#異步模式分類 基于任務的異步模式&#xff08;TAP&#xff09; 基于事件的異步模式&#xff08;EAP&#xff09;和異步編程模型模式&#xff08;APM&#xff09; 2、基于任務的異步模式&#xff08;TAP&#xff09; 基于任務的異步模式&#xff08;TAP&#xff09;用單個方…

從零手寫實現 nginx-28-error pages 指令

前言 大家好&#xff0c;我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的&#xff0c;可以參考我的另一個項目&#xff1a; 手寫從零實現簡易版 tomcat minicat 手寫 nginx 系列 …

夾子音轉換器matlab

操作過程點擊此處觀看 上段時間補習了一下傅里葉變化的知識&#xff0c;突發奇想可以根據此做一款聲音轉換器&#xff0c;使用工科神器Matlab進行完成&#xff0c;并且開發了可操作界面如下圖所示&#xff1a; 功能實現與描述 軟件中可以實現聲音的錄制、回放、文件的保存與…

【C++】動態內存分配(關于構造與析構函數的調用)動態數組類 動態創建多維數組 知識點+代碼學習記錄

一.動態內存分配相關知識點 1.堆和棧內存&#xff1a; 堆內存&#xff1a;動態分配的內存位于堆中&#xff0c;它不受作用域限制&#xff0c;由程序員控制其生命周期。 棧內存&#xff1a;局部變量和函數參數等自動分配的內存位于棧中&#xff0c;由編譯器自動管理。 2.new…

性能測試(2)

jmeter參數化 loadrunner Jmeter IP欺騙&#xff0c;也稱為IP欺詐&#xff0c;是指通過偽裝、篡改IP地址的方式&#xff0c;進行網絡攻擊或欺騙行為。這種行為可能會導致網絡安全問題&#xff0c;包括身份盜竊、數據泄露、DDoS攻擊等。為了保護自己的網絡安全&#xff0c;用戶…

MySQL-表的約束

文章目錄 一、空屬性二、默認值三、zerofill四、列描述五、主鍵刪除主鍵追加主鍵復合主鍵根據主鍵快速索引 六、自增長last_insert_id() 七、唯一鍵八、外鍵class表&#xff08;主表&#xff09;student表&#xff08;從表&#xff09; 一、空屬性 之前我們將表的機構&#xff…

單例模式java

并發的有序性會導致返回空指針 class A{private static volatil A a;private A(){}public A getInstance(){if(anull){synchronized(A.class){if(anull)anew A();}}return a; }anew A();這條語句&#xff0c;他需要&#xff1a;開辟空間&#xff0c;初始化空間&#xff0c;指針…

python熱門面試題三

面試題1&#xff1a;Python中的列表推導式是什么&#xff1f;請給出一個例子。 回答&#xff1a; 列表推導式&#xff08;List Comprehension&#xff09;是Python中一種非常強大且簡潔的構建列表的工具。它允許你通過一個表達式來創建一個新的列表&#xff0c;這個表達式定義…

無顯卡也可以玩大模型-MiniGPT-4篇

MiniGPT-4學習 1.Colab上部署MiniGPT-42.論文摘要3.模型架構4.模型訓練5.總結 1.Colab上部署MiniGPT-4 代碼&#xff1a; https://github.com/Czi24/Awesome-MLLM-LLM-Colab/blob/master/MLLM/MiniGPT-4-colab/MiniGPT-4.md 2.論文摘要 最近的 GPT-4 展示了非凡的多模式能力&…

【設計模式之美】【建造型】工廠模式:通過面向接口編程思路,串起業務流程

文章目錄 一. 簡單工廠&#xff08;Simple Factory&#xff09;第一種簡單工廠&#xff1a;面向接口編程與工廠類&#xff1a;劃分功能職責第二種&#xff1a;單例簡單工廠&#xff1a;節省內存和對象創建的時間 二. 工廠方法&#xff08;Factory Method&#xff09;&#xff1…

文心一言:如何備考軟考架構師

提問&#xff1a;軟考高級:架構師指導&#xff0c;有哪些考點、重點考點有哪些&#xff1f;需要如何備考&#xff1f;案例分析題如何做&#xff1f;論文如何寫&#xff1f; 文心一言回答1700字如下&#xff1a; 針對軟考高級架構師的考試&#xff0c;以下是對考點、重點考點、備…

DiffusionModel-Transformer知識回顧

論文鏈接&#xff1a; Attention Is All You Need CNN vs RNN vs Transformer CNN&#xff08;卷積神經網絡&#xff09; 特點&#xff1a; 局部連接&#xff1a;每個卷積神經元只與輸入數據的局部區域連接&#xff0c;這有助于捕捉局部特征。權重共享&#xff1a;卷積核的權重…

Android筆記:Constructor (xxx) has been changed after generation.

遇到此報錯時&#xff0c;onstructor (xxx) has been changed after generation.是因為修改了實體類字段后什么都不修改的話就會報這個錯 這條信息是關于代碼生成和代碼變更的警告。當你使用某些工具&#xff08;如注解處理器、代碼生成庫等&#xff09;來自動生成代碼時&…