線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。
線性結構的特點是:在資料元素的非空有限集中,
(1)存在唯一的乙個被稱作「第乙個」的資料元素;
(2)存在唯一的乙個被稱作「最後乙個」的資料元素。
(3)除第乙個之外,集合中的每個資料元素均只有乙個前驅;
(4)除最後乙個外,集合中每個資料元素均只有乙個後繼。
線性表的順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料元素。一般來說,線性表的第i個資料元素ai的儲存位置為:
loc(ai) = loc(a1)+(i-1)× l;
l表示的是乙個資料元素所需的儲存量。loc(a1)為基位址。
線性順序表的基本操作:
1//------ 線性表的動態分配順序儲存結構 ------
2#define list_init_size 100 //
線性表儲存空間的初始分配量
3#define listincrement 10 //
線性表儲存空間的分配增量
4 typedef struct
sqlist; 910
//------ 線性表的初始化 ------
11 status initlist_sq(sqlist &l) //
initlist_sq
1920
//------ 線性表的插入 ------
21 status listinsert_sq(sqlist &l,int
i,elemtype e)
3132 q = &(l.elem[i-1]); //
q為插入位置
33for(p = &(l.elem[l.length-1]); p>=q;--p)
34 *(p+1) = *p; //
插入位置及之後的元素右移
35 *q = e; //
插入e36 ++l.length; //
表長增1
37return
ok;
38 }//
listinsert_sq
3940
41//
------ 線性表的刪除 ------
42 status listdelete_sq(sqlist &l,int i,elemtype &e)//
listdelete_sq
5354
//------ 線性表的比較查詢------
55int locateelem_sq(sqlist l,elemtype e,status(*compare)(elemtype,elemtype)) //
locateelem_sq
6465
//------ 線性表的合併------
66void mergelist_sq(sqlist la,sqlist lb,sqlist &lc)
79while(pa <= pa_last) *pc++ = *pa++; //
插入la的剩餘元素
80while(pb <= pb_last) *pc++ = *pb++; //
插入lb的剩餘元素
81 } //
mergelist_sq
posted @
2018-08-27 17:40
木辛tiamo 閱讀(
...)
編輯收藏
資料結構 A 線性結構之順序表
1.線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串。線性表在邏輯上是線性結構,也就說是連續的一條直線。但在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式儲...
資料結構線性表之順序表
純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...
資料結構 線性表之順序表
線性表是包含若干資料元素的乙個線性序列 記為 l a0,ai 1,ai,ai 1 an 1 l為表名,ai 0 i n 1 為資料元素 n為表長,n 0 時,線性表l為非空表,否則為空表。線性表l可用二元組形式描述 l d,r 即線性表l包含資料元素集合d和關係集合r d r 關係符在這裡稱為有序對...