順序表基礎

?錄
1. 課前準備
2. 順序表概念及結構
3. 順序表分類
4. 實現動態順序表

正?開始
課前預備

1. 課程?標

C語?語法基礎到數據結構與算法,前?已經掌握并具備了扎實的C語?基礎,為什么要學習數據結構
課程??通訊錄項?

2. 需要的儲備知識

簡單了解,通訊錄具備增加、刪除、修改、查找聯系?等操作。要想實現通訊錄項?有兩個技術關
鍵:
1)C語?語法基礎
2)數據結構 之 順序表/鏈表

3. 數據結構相關概念

?1、什么是數據結構

數據結構是由“數據”和“結構”兩詞組合?來。
什么是數據?常?的數值1、2、3、4.....、教務系統?保存的??信息(姓名、性別、年齡、學歷等
等)、????眼可以看到的信息(?字、圖?、視頻等等),這些都是數據
什么是結構?
當我們想要使??量使?同?類型的數據時,通過?動定義?量的獨?的變量對于程序來說,可讀性
?常差,我們可以借助數組這樣的數據結構將?量的數據組織在?起,結構也可以理解為組織數據的
?式。
想要找到草原上名叫“咩咩”的?很難,但是從?圈?找到1號?就很簡單,?圈這樣的結構有效將
?群組織起來
概念:數據結構是計算機存儲、組織數據的?式。數據結構是指相互之間存在?種或多種特定關系
的數據元素的集合。數據結構反 映數據的內部構成,即數據由那部分構成,以什么?式構成,以及數

據元素之間呈現的結構。
總結:
1)能夠存儲數據(如順序表、鏈表等結構)
2)存儲的數據能夠?便查找
2、為什么需要數據結構?

如圖中所?,不借助排隊的?式來管理客?,會導致客?就餐感受差、等餐時間?、餐廳營業混亂等
情況。同理,程序中如果不對數據進?管理,可能會導致數據丟失、操作數據困難、野指針等情況。
通過數據結構,能夠有效將數據組織和管理在?起。按照我們的?式任意對數據進?增刪改查等操
作。
最基礎的數據結構:數組。
【思考】有了數組,為什么還要學習其他的數據結構?
假定數組有10個空間,已經使?了5個,向數組中插?數據步驟:
求數組的?度,求數組的有效數據個數,向下標為數據有效個數的位置插?數據(注意:這?是
否要判斷數組是否滿了,滿了還能繼續插?嗎).....
假設數據量?常龐?,頻繁的獲取數組有效數據個數會影響程序執?效率。
結論:最基礎的數據結構能夠提供的操作已經不能完全滿?復雜算法實現。

順序表

1、順序表的概念及結構

1.1 線性表

線性表( linear list )是n個具有相同特性的數據元素的有限序列。 線性表是?種在實際中?泛使
?的數據結構,常?的線性表:順序表、鏈表、棧、隊列、字符串...
線性表在邏輯上是線性結構,也就說是連續的?條直線。但是在物理結構上并不?定是連續的,
線性表在物理上存儲時,通常以數組和鏈式結構的形式存儲。
案例:蔬菜分為綠葉類、?類、菌菇類。線性表指的是具有部分相同特性的?類數據結構的集合
如何理解邏輯結構和物理結構?

2、順序表分類?

順序表和數組的區別
? 順序表的底層結構是數組,對數組的封裝,實現了常?的增刪改查等接?
? 順序表分類
? 靜態順序表
概念:使?定?數組存儲元素

靜態順序表缺陷:空間給少了不夠?,給多了造成空間浪費?

? 動態順序表 ?

?3、靜態順序表

最簡答的可以這樣寫

?下面是優化后的代碼:

最好是一開始就養成好的習慣

4.動態順序表?

4.動態順序表和靜態順序表的優勢和劣勢

5 .動態順序表的簡單實現

5.1初始化順序表

這里需要創建3個文件

?

注意這里要放我們寫的結構的指針類型要不然沒辦法傳值,但這里太長太繁瑣了這里重命名一下

下面是優化后的代碼:

?寫一個簡單的來測試這個是否初始化成功

通過調試觀察初始化是否成功

?可以看到三個成員都已經初始化成功

5.2 順序表的插入

順序表的插入大致可以分成三種

頭插入,尾插,任意

5.3 擴容規則

第一種和第二種都存在一定的問題這里推進是第三種?

?

觀察上面通過觀察可以得出不管是頭插還是尾插只要是capacity(容量)和size(有效數據)相等的時候那么這個時候再插入這里就要擴容了,

5.4擴容代碼

5.5尾插

void SLPushBack(MySL* sl, SLdatatype x)//SLdatetype現在就是int
{SLcheckcapacity(sl);//SLcheckcapacity(&(sl->arr));sl->arr[sl->size] = x;sl->size++;
}

?這里通過調試可以看到已經插入成功

?5.6打印順序表的元素

為了方便這里給他封裝成一個函數打印

?在尾插這里插入一個空指針,這里直接給干出bug了,所以這里要在尾插這里判斷一下

這樣就可以避免空指針直接錯誤

還可以直接斷言

加上需要的頭文件

?

?這里斷言就會直接告訴我們錯哪里的這種方式比較粗暴

?5.7頭插

如果這里直接把100插入到0那里,那么0的那個數據就會直接丟失,所以應該先移動數據,把所以的數據往后移動一位,?所以我們循環要從后往前寫

5.8尾刪

?

?

?5.9頭刪????????

?

5.10指定位置?插入

假如在第3(按照從0開始)個插入四變成123456

?

?

?5.11指定位置刪除

這里刪除多余的2

?

?

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

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

相關文章

小程序分賬方案:實現商戶分賬的簡便與靈活

隨著移動支付的普及和小程序的快速發展,越來越多的商家選擇在微信小程序上開展業務。然而,對于一些有多個分賬方的商戶而言,如何實現快速、準確和靈活的資金分賬成為了一個挑戰。本文將介紹一種高效的小程序分賬方案,幫助商戶輕松…

C++ STL 優先隊列(priority_queue)

1.優先隊列是一種極其特殊的隊列,他與標準的隊列使用線性結構進行計算不同,優先隊列的底層是以散列的狀態(非線性)表現的,他與標準的隊列有如下的區別,標準的隊列遵從嚴格的先進先出,優先隊列并…

負載均衡Ribbon和LoadBalancer

Ribbon和LoadBalancer都是用于實現負載均衡的工具,但它們在應用場景和實現方式上有所不同。 Ribbon 是一個客戶端負載均衡器,它是一個Java庫,可以在客戶端應用程序中使用。通過在客戶端應用程序中維護服務實例列表,并使用負載均衡…

修改docker默認存儲位置【高版本的docker】

一、修改docker默認存儲位置 1、停服務 systemctl stop docker 2、修改/etc/docker/daemon.json添加新的dcoker路徑 如"data-root": "/mnt/hdd1/docker" 3、保存后重啟服務:systemctl restart docker 二、其他服務的命令 systemctl disab…

AcWing 787. 歸并排序 解題思路及代碼

先貼個題目&#xff1a; 以及原題鏈接&#xff1a;787. 歸并排序 - AcWing題庫https://www.acwing.com/problem/content/789/純板子題&#xff0c;先貼代碼吧&#xff0c;根據代碼講思路&#xff1a; #include <iostream> using namespace std;const int N 1e5 10; in…

【Maven】Maven 基礎教程(三):build、profile

《Maven 基礎教程》系列&#xff0c;包含以下 3 篇文章&#xff1a; Maven 基礎教程&#xff08;一&#xff09;&#xff1a;基礎介紹、開發環境配置Maven 基礎教程&#xff08;二&#xff09;&#xff1a;Maven 的使用Maven 基礎教程&#xff08;三&#xff09;&#xff1a;b…

修飾符【C#】

分為四部分&#xff1a;屬性修飾符&#xff0c;存取修飾符&#xff0c;類修飾符和成員修飾符。 屬性修飾符&#xff1a; [Serializable]&#xff1a;按值將對象封送到遠程服務器。在按值封送對象時&#xff0c;就會創建一個該對象的副本&#xff0c;并將其序列化傳送到服務器…

TCP/UDP,HTTP、HTTPS存在什么風險會影響到網絡安全嗎

近年來&#xff0c;隨著網絡技術的飛速發展&#xff0c;互聯網影響人們的方方面面&#xff0c;我們平時也接觸到許多以前從未聽過的東西&#xff0c;今天德迅云安全就來分享下一些互聯網安全知識&#xff0c;講解一些關于常看到的關于IP, TCP/UDP&#xff0c;HTTP、HTTPS這些名…

QT之液晶電子時鐘

根據qt的<QLDNumber>做了一個qt液晶電子時鐘. 結果 實時顯示當前時間,左鍵可以拖動時鐘在屏幕的位置,右鍵點擊關閉顯示. 實現過程 新建一個class文件,讓這個文件的父類是QLCDNumber 相關功能變量定義和函數實現 .c文件代碼 這里需要注意的一點是event->button是獲取的…

SpringMVC自定義視圖解析器

/** * 使用View接口完成請求轉發|重定向 * 解釋: * SpringMVC的官方&#xff0c;提供了一個叫做View的接口&#xff0c;告訴開發人員 * DispatcherServlet底層會調用View接口的實例化對象中的邏輯方法 * 來完成對應的請求轉發和重定向。 * 使用: * 1. 單元方法的返回值為View接…

前臺自動化測試:基于敏捷測試驅動開發(TDD)的自動化測試原理

一、自動化測試概述 自動化測試主要應用到查詢結果的自動化比較&#xff0c;把借助自動化把相同的數據庫數據的相同查詢條件查詢到的結果同理想的數據進行自動化比較或者同已經保障的數據進行不同版本的自動化比較&#xff0c;減輕人為的重復驗證測試。多用戶并發操作需要自動…

【開源】JAVA+Vue.js實現APK檢測管理系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 開放平臺模塊2.3 軟件檔案模塊2.4 軟件檢測模塊2.5 軟件舉報模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 開放平臺表3.2.2 軟件檔案表3.2.3 軟件檢測表3.2.4 軟件舉報表 四、系統展示五、核心代…

pdfpages 宏包和 includepdf 使用問題

在 latex 中插入其他 pdf 文檔的頁時 \usepackage{pdfpages} % 插入 PDF 頁 \includepdf[pages-]{pg276-axi-hbm-en.pdf} 用 xelatex 編譯生成的 pdf 文檔內容會與原文檔內容不一致&#xff0c;文字位置對折等問題。 解決辦法&#xff1a; A 文檔中的某些…

springBoot整合Redis(二、RedisTemplate操作Redis)

Spring-data-redis是spring大家族的一部分&#xff0c;提供了在srping應用中通過簡單的配置訪問redis服務&#xff0c;對reids底層開發包(Jedis, JRedis, and RJC)進行了高度封裝&#xff0c;RedisTemplate提供了redis各種操作、異常處理及序列化&#xff0c;支持發布訂閱&…

Android:BitmapFactory.decodeStream Bitmap的內存優化OutOfMemory異常以后Crash閃退

自己項目中使用如下方法&#xff0c;有的手機上會奔潰報錯&#xff0c;原因是BitmapFactory.decodeStream部分沒有使用options參數改變內存大小 改成如下形式后正常了&#xff1b;正確解決方案&#xff1a;設置inSampleSize 一&#xff09;Android BitmapFactory.decodeStream(…

C++利用匯編挖掘編程語言的本質..

1.謬論 很多非一手的資料特別是中文資料其實并不可靠 因為很多作者都是直接通過轉載他人的作品 也不管他人作品真與假 而且有一部分的作品中的言論和官方描述相去甚遠 有的則是翻譯的過程中出現了問題 比如sizeof很多人認為是一個函數 其實他并不是一個函數 而是一個運算符 是…

【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit

1.問題描述 升級到4.0.0.59版本后&#xff0c;通過pushService.getToken獲取華為的token時報如下錯誤&#xff1a;Illegal application identity. 解決方案 Mate 40 Pro (NOH) 從 4.0升級到4.1版本后&#xff0c;會出現UDID變化&#xff0c;影響歷史的調試簽名使用&#xff…

檔案數字化驗收流程

檔案數字化驗收流程通常包括以下步驟&#xff1a; 1. 確定驗收標準&#xff1a;制定檔案數字化驗收標準&#xff0c;明確要求檢查的內容、質量要求、驗收標準等。 2. 準備驗收環境&#xff1a;為檔案數字化驗收準備合適的環境&#xff0c;包括驗收場所、設備、人員等。 3. 準備…

vscode 引入外部依賴包

背景 我要在vscode中寫一些antlr代碼生成的cpp代碼&#xff0c;但是在引入頭文件#include "antlr4-runtime.h"的時候&#xff0c;出現報錯&#xff0c;顯示沒有這個頭文件&#xff0c;顯然這是我們沒有導入相關的包&#xff0c;因此我首先嘗試了將antlr4的依賴源碼在…

Semantic human matting

1.introduction 數據集包括&#xff0c;時尚模特數據集&#xff0c;超過18.8w張模特圖&#xff0c;從中選出35311張圖片&#xff0c;DIM數據集&#xff0c;僅包含人類的圖像&#xff0c;202個前景圖像&#xff0c;背景來自coco數據集和互聯網&#xff0c;背景圖不含人類&#x…