線性表定義:
線性表是由n個性質相同的資料元素組成的有序序列,n代表線性表長度。線性表內部節點都有且只有乙個直接前驅和直接後驅。
eg:字串』pomme』構成線性表(p,o,m,m,e)。
*根據線性表內的儲存形式可分為:**順序表**和**鍊錶**兩種型別。*
1.1 順序表概念
用一組位址連續的儲存單元依次儲存各元素。通過位置來表示資料元素之間的線性邏輯關係。
順序儲存的記憶體示意圖
1.2 順序表型別定義
typedef
int datatype;
struct list
;typedef
struct list* seqlist;
1.3 順序表運用
1.3.1順序表的創立與判空
seqlist setnull_seq
(int m)
else
free
(seq);}
cout <<
"建立失敗"
<< endl;
return
null;}
void
set_seq
(seqlist seq)
}
空順序表的建立關鍵在於空間的分配容易遺漏,還有條件判斷的完整性。方法並不侷限,但是個人認為大同小異,需牢記順序表的關鍵元素。
順序表的判空:
int
isnulllist_seq
(seqlist seq)
通過順序表自身元素(長度)來判空。
1.3.2 順序表的遍歷void
cout
(seqlist seq)
}
順序表的建立以及遍歷進行簡單運用:
int
main()
其中set_seq函式是對空順序表進行賦值,**如下:
void
set_seq
(seqlist seq)
}
執行結果:
1.3.3 順序表的插入
順序表的插入過程:線性表中下標為n-和下標為n的資料元素之間插入乙個新的元素x,將長度為m的順序表變為m+1的順序表。
int
insert_seq
(seqlist seq,
int p, datatype x)
if(seq-
>n >= seq-
>max)
for(q = seq-
>n -
1; q >= p; q--
) seq-
>elem[p]
= x;
//插入x元素
seq-
>n +=1
;return1;
}
關鍵在於將指定位置之後的元素後移並改變順序表長度;操作順序則是由後向前進行。
1.3.4 順序表的刪除
順序表的刪除過程:和插入類似,將長度為n的順序表變為長度為n-1的順序表。
int
delete_seq
(seqlist seq,
int p)
//刪除下標為p的元素
for(q = p; q < seq-
>n -
1; q++
) seq-
>n -=1
;return1;
}
刪除演算法中將指定位置之後的元素直接向前移,覆蓋掉需要刪除的元素,操作順序則是由前向後進行的。
1.3.5 順序表的查詢
一般查詢思路:在順序表中查詢值為x的元素存在則返回其下標,不存在則返回-1;從順序表第乙個元素開始比較,直到最後乙個。
int
locate_seq
(seqlist seq,datatype x)
}return-1
;}
二分查詢:針對遞增有序的順序表,可採用二分查詢,也稱折半查詢;時間效率提高。
查詢過程:將需要查詢的元素與中間元素進行比較,若大於,則在後半區操作,小於則在前半區操作,操作方法相同,將查詢元素與所比較區間的中間元素進行比較,以此來縮小範圍,知道得出結果。
二分查詢(非遞迴):
int
binsearch
(seqlist seq,
int key)
else
if(seq-
>elem[mid]
> key)
else low = mid +1;
index++;}
cout <<
"查詢失敗,共進行"
<< index <<
"次查詢"
<< endl;
return-1
;}
二分查詢(遞迴):
int
binsearch_recursion
(seqlist seq,
int key,
int low,
int high)
if(seq-
>elem[mid]
> key)
if(seq-
>elem[mid]
< key)
} cout <<
"查詢失敗"
<< endl;
return-1
;}
資料結構筆記(一) 線性表(順序表 鍊錶)
資料結構筆記 一 線性表 線性表就是乙個一維的表,其中各個元素之間是一對一的。對線性表的定義 adt 線性表 list data 線性表的資料物件集合 a1,a2,an 每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個...
資料結構 一 線性表
一 線性表的定義 線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被成為 第乙個 的資料元素 2 存在唯一的乙個被成為 最後乙個 的資料元素 3 除了第乙個之外,其他的元素均只有乙個前驅,除了最後乙個以外,其他的元素均只有乙個後繼 線性表是最常用且最簡單的一種資料結構,乙個線性表是n個...
資料結構學習 線性表
線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...