資料結構與演算法 線性表之順序儲存(C語言)

2021-09-29 11:38:06 字數 1750 閱讀 1018

線性結構是較簡單、常用的一種資料結構,其特點為:除第乙個元素無直接前驅、最後乙個元素無直接後繼外,集合中其餘元素均有唯一的直接前驅和直接後繼。而線性結構的儲存方式有兩種:順序儲存和鏈式儲存。

使用結構體來定義順序表。

#include

#include

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 20

typedef

int elemtype;

typedef

int status;

typedef

struct

sqlist;

/* 建立表 */

status createlist

(sqlist *l)

l->length = l_length -1;

return ok;

}

/* 列印表 */

status print

(sqlist l)

return ok;

}else

}

要做到插入運算,要弄清楚兩個關鍵問題:

插入不成功的情況該怎麼辦?

插入成功後,表發生了什麼變化?

/* 插入元素 */

status listinsert

(sqlist *l,

int i, elemtype e)

/* 判斷插入的位置是否合法 */

if(i <

1|| i > l-

>length +2)

// i 位置從 1 開始算,小於 1 為非法,l->length 應 +1,考慮到在表最後一位追加,所以 +2

/* 把要插入元素的位置騰空,其他元素往後挪,應該先挪最後乙個 */

for(

int k = l-

>length; k >= i -

1; k--

) l-

>data[i -1]

= e;

l->length++

;// 插入了乙個元素,自然長度需要 +1

return ok;

}

/* 刪除元素 */

status deleteelem

(sqlist *l,

int i, elemtype *e)

if(i <

1|| i > l-

>length +1)

*e = l-

>data[i -1]

;// 將要刪除的元素返回

/* 位移 */

for(

int k = i; k <= l-

>length; k++

) l-

>length--

;return ok;

}

/* 查詢元素 */

status getelem

(sqlist l, elemtype e)

}return ok;

}

int

main()

}return0;

}

資料結構與演算法 線性表順序儲存結構

今天總結一下資料結構中的線性表中的順序儲存結構,這是一種比較簡單的結構。首先,看一下什麼是線性表。什麼是線性表?線性表是一種簡單的資料結構,資料元素之間是一對一的關係,即除了第乙個和最後乙個元素外其餘元素都是首尾相接的。元素的個數稱為線性表的長度,長度為零則表示線性表為空。什麼是線性表的順序儲存結構...

資料結構 演算法 線性表 順序表

演算法是解決特定問題的步驟的描述。在計算機中演算法是乙個有窮 或語句 指令 的有序集合。它確定了解決某乙個問題的乙個運算序列。對於問題的初始輸入,通過演算法有限步的執行,產生乙個或多個輸出。演算法是解決問題的思想方法 程式是計算機語言的具體實現 共同點 它們的語言不能有二義性 區別 演算法不依賴計算...

資料結構與演算法 線性表之順序表與鍊錶結構

線性表,全名為線性儲存結構。簡介 將具有 一對一 關係的資料 線性 地儲存到物理空間中,這種儲存結構就稱為線性儲存結構 簡稱線性表 注意 使用線性表的資料所使用的資料型別必須是一致的。有兩種方式線性地儲存資料到記憶體中,即順序儲存和鏈式儲存。下圖為順序儲存在記憶體中的儲存方式 當需要從記憶體中將存放...