線性表與順序存儲結構(下)

前言

接上文(線性表與順序存儲結構(上))。

這些順序存儲結構的方法在順序表上下卷中已經提到過,但是有些許不同,可以為理解順序表提供更豐富的視角。(不過最主要的區別在于順序表上下卷中的順序表是動態開辟的而這里底層的是定長數組。)

正文

順序存儲結構的插入與刪除

獲得元素操作

對于線性表的順序存儲結構而言,要實現GetElem操作,即將線性表L中的第i個元素值返回,只要i的數值在數組下標范圍內,把數組第i-1下標的值返回即可:

#define OK 1
#define ERROR 0
typedef int Status;//Status是函數的返回值類型,其值是函數執行狀態代碼,如OK等//初始條件:順序線性表L已存在,1<=i<=ListLength(L)
//操作結果:用e返回L中第i個數據元素的值,注意i指的不是下標
Status GetElem(SqList L, int i, ElemType* e)//假設已有結構體類型SqList,元素類型ElemType
{if (L.length == 0 || i<1 || i>L.length)//無法成功獲取的各種情況{return ERROR;//獲取失敗}*e = L.data[i - 1];//得到元素值return OK;//獲取成功
}
注意

我們真正返回的數據其實是*e,而return的不過是函數處理的狀態,返回值類型Status是一個整型,返回OK即1,ERROR即0。

插入操作

在上篇文章中我們提到的ListInsert(*L,i,e),即在線性表L中的第i個位置插入新元素e,應該如何實現呢?

這有點像插隊,在某個位置插入數據,那么這個位置及之后的數據都得往后移動一位。

現在我們更具體和全面地來梳理一下插入算法的思路

1.如果插入位置不合理,拋出異常;

2.如果線性表長度大于等于數組長度,則拋出異常或動態增加容量;

3.從最后一個元素開始向前遍歷到第i個位置,分別將它們都向后移動一個位置;

4.插入數據

5.表長加1(記錄當前長度的變量+1)

代碼參考:

刪除操作?

思路:

1.如果刪除位置不合理,拋出異常;

2.取出刪除元素;

3.從刪除元素位置開始遍歷到最后一個元素位置,分別將它們都向前移動一個位置;(注意與插入操作區分開來)

4.表長減1

代碼參考:?

本文到此結束,祝閱讀愉快^_^

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

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

相關文章

機器人關節 viscous friction與結構阻尼

Viscous Friction&#xff08;粘性摩擦&#xff09; 定義&#xff1a;Viscous friction&#xff0c;也被稱為粘性摩擦或粘滯摩擦&#xff0c;是機器人關節在運動過程中由于接觸面之間的相互作用而產生的摩擦力。這種摩擦力與關節的運動速度有關&#xff0c;通常表現為速度越大&…

HarmonyOS開發實戰:分布式文件系統-hmdfs

分布式文件系統提供跨設備的文件訪問能力&#xff0c;適用于如下場景&#xff1a; 兩臺設備組網&#xff0c;A 設備可以無感讀取和修改 B 設備的文件。 邊緣服務器可以自動同步組網中多個嵌入式設備中的文件數據。 hmdfs 在分布式軟總線動態組網的基礎上&#xff0c;為網絡上…

Ubuntu添加系統字體

&#xff08;2024.6.30&#xff09; 系統字體保存路徑在/usr/share/fonts下&#xff0c;如果此目錄下缺少字體&#xff0c;則使用其他可視化api&#xff08;如Python的pygame庫&#xff09;的默認配置時可能會出現亂碼問題。 往Ubuntu中添加字體的方法 方法一&#xff1a;手…

Ant Design Vue:如何提升你的前端開發效率?

目錄 1. Ant Design Vue 簡介 1.1 特性概覽 1.2 安裝與配置 2. 常用組件及使用示例 2.1 Button 按鈕 2.2 Form 表單 2.3 Table 表格 2.4 Modal 對話框 3. 常見問題及解決方案 3.1 組件無法渲染 問題描述 解決方案 3.2 表單驗證失效 問題描述 解決方案 3.3 表格…

Python | 計算位渦平流項

寫在前面 最近忙著復習、考試…都沒怎么空敲代碼&#xff0c;還得再準備一周考試。。。等考完試再慢慢更新了&#xff0c;今天先來淺更一個簡單但是使用的python code 在做動力機制分析時&#xff0c;我們常常需要借助收支方程來診斷不同過程的貢獻&#xff0c;其中最常見的一…

51單片機-點亮LED燈

目錄 新建項目選擇型號添加新文件到該項目設置字體和utf-8編碼二極管如何區分正負極原理&#xff1a;CPU通過寄存器來控制硬件電路 用P2寄存器的值控制第一個燈亮進制轉換編譯查看P2寄存器的地址生成HEX文件把代碼下載到單片機中 新建項目 選擇型號 stc是中國生產的、這個里面…

token登錄比密碼登錄有什么優勢嗎

token登錄比密碼登錄有什么優勢嗎 使用令牌&#xff08;Token&#xff09;登錄相比于密碼登錄具有一些優勢&#xff0c;包括&#xff1a; 安全性&#xff1a;令牌通常采用加密技術&#xff0c;使得它們更難以被盜取或猜測。相比之下&#xff0c;密碼存在被猜測、破解或被暴力攻…

解決瀏覽器兼容性問題的方法

解決瀏覽器兼容性問題的方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們來探討如何解決網頁開發中常見的瀏覽器兼容性問題。隨著互聯網技術的發展&…

java中輸入輸出流的繼承關系

在 Java 中,輸入輸出流的繼承關系主要圍繞兩個抽象基類展開:字節流基類 InputStream 和 OutputStream,以及字符流基類 Reader 和 Writer。這些類形成了 Java I/O 系統的基礎,提供了豐富的子類以適應不同的輸入輸出需求。 字節流 字節流用于處理原始的二進制數據。 Input…

利用Linked SQL Server提權

點擊星標&#xff0c;即時接收最新推文 本文選自《內網安全攻防&#xff1a;紅隊之路》 掃描二維碼五折購書 利用Linked SQL Server提權 Linked SQL server是一個SQL Server數據庫中的對象&#xff0c;它可以連接到另一個SQL Server或非SQL Server數據源&#xff08;如Oracle&a…

初學者輕松搞定19個經典的Python程序以及代碼演示

Python的經典程序展示了Python語言基本特性和功能的簡單示例,這些程序在學習和理解Python編程語言的過程中起著至關重要的作用. 一些常見的經典Python程序及其在學習Python時的功能&#xff1a; 1.Hello, World! print("Hello, World!")解釋:這是Python的基本輸出…

primeflex overflow樣式類相關的用法和案例

文檔地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

【Flink】Flink SQL

一、Flink 架構 Flink 架構 | Apache Flink 二、設置TaskManager、Slot和Parallelism 在Apache Flink中&#xff0c;設置TaskManager、Slot和Parallelism是配置Flink集群性能和資源利用的關鍵步驟。以下是關于如何設置這些參數的詳細指南&#xff1a; 1. TaskManager 設置 …

【漏洞復現】致遠互聯FE協作辦公平臺——SQL注入

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 致遠互聯FE協作辦公平臺是一個專注于協同管理軟件領域的數智化運…

關于內存和外存文件不同字符集下占用空間大小問題

關于內存和外存不同字符集下文件占用空間大小問題 存儲&#xff08;外存&#xff09;的文件中的字符&#xff1a; ASCII&#xff1a;每個字符占用1個字節&#xff0c;用來存儲英文字符和常用標點符號。ISO-8859-1&#xff1a;每個字符占用1個字節&#xff0c;向下兼容ASCII。G…

DS18B20單總線數字溫度傳感器國產替代MY18E20 MY1820 MY18B20Z MY18B20L(一)

前言 DS18B20是全球第一個單總線數字溫度傳感器&#xff0c;推出時間已經超過30年&#xff0c;最早由美國達拉斯半導體公司推出&#xff0c;2001年1月&#xff0c;美信以25億美元收購達拉斯半導體&#xff08;Dallas Semiconductor&#xff09;&#xff0c;而美信在2021年8月被…

DM達夢數據庫存儲過程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;歡迎各位來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里不僅可以有所收獲&#xff0c;同時也能感受到一份輕松歡樂的氛圍&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

RDMA通信2:RDMA基本元素和組成 通信過程元素關系解析 視頻教程

哈哈哈&#xff0c;今天我們把下面這張圖理解了&#xff0c;我們的任務就完成了&#xff01; 視頻教程在這&#xff1a;1.2 RDMA基本元素和組成 通信過程元素關系解析_嗶哩嗶哩_bilibili 一、WQ和WQE 工作隊列元素(work queue element,WQE)&#xff1a;是軟件下發給硬件的任務…

Apache Ranger 2.4.0 集成Hive 3.x(Kerbos)

一、解壓tar包 tar zxvf ranger-2.4.0-hive-plugin.tar.gz 二、修改install.propertis POLICY_MGR_URLhttp://localhost:6080REPOSITORY_NAMEhive_repoCOMPONENT_INSTALL_DIR_NAME/BigData/run/hiveCUSTOM_USERhadoop 三、進行enable [roottv3-hadoop-01 ranger-2.4.0-hive…

什么是TOGAF架構框架的ADM方法?

ADM是架構開發方法&#xff08; Architecture Development Method&#xff09;&#xff0c;為開發企業架構所要執行的各個步驟以及它們質檢的關系進行詳細的定義&#xff0c;它是TOGAF規范中最為核心的內容。 ADM的具體步驟&#xff1a; 預備階段&#xff08;Preliminary Phas…