線性結構是較簡單、常用的一種資料結構,其特點為:除第乙個元素無直接前驅、最後乙個元素無直接後繼外,集合中其餘元素均有唯一的直接前驅和直接後繼。而線性結構的儲存方式有兩種:順序儲存和鏈式儲存。
使用結構體來定義順序表。
#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;
}
資料結構與演算法 線性表順序儲存結構
今天總結一下資料結構中的線性表中的順序儲存結構,這是一種比較簡單的結構。首先,看一下什麼是線性表。什麼是線性表?線性表是一種簡單的資料結構,資料元素之間是一對一的關係,即除了第乙個和最後乙個元素外其餘元素都是首尾相接的。元素的個數稱為線性表的長度,長度為零則表示線性表為空。什麼是線性表的順序儲存結構...
資料結構 演算法 線性表 順序表
演算法是解決特定問題的步驟的描述。在計算機中演算法是乙個有窮 或語句 指令 的有序集合。它確定了解決某乙個問題的乙個運算序列。對於問題的初始輸入,通過演算法有限步的執行,產生乙個或多個輸出。演算法是解決問題的思想方法 程式是計算機語言的具體實現 共同點 它們的語言不能有二義性 區別 演算法不依賴計算...
資料結構與演算法 線性表之順序表與鍊錶結構
線性表,全名為線性儲存結構。簡介 將具有 一對一 關係的資料 線性 地儲存到物理空間中,這種儲存結構就稱為線性儲存結構 簡稱線性表 注意 使用線性表的資料所使用的資料型別必須是一致的。有兩種方式線性地儲存資料到記憶體中,即順序儲存和鏈式儲存。下圖為順序儲存在記憶體中的儲存方式 當需要從記憶體中將存放...