01線性表
1.線性表的判斷方式就是元素有且只有乙個直接前驅和直接後繼,元素可以為空,此時叫做空表
2.抽象資料型別標準格式
adt 抽象資料型別名
data
operation
endadt
3.操作偽**
operation
endadt
4.實際問題
提問:實現兩個線性表a,b的並集操作
思路:迴圈遍歷集合b中的每個元素,判斷當前元素是否存在於a中,如果不存在插入到a中即可
1.寫乙個for迴圈,根據迴圈條件我需要知道迴圈的範圍,即就是b集合的長度
for (int i = 0; i <= listlength(b); i++)
2.拿到的每乙個b集合中的元素,判斷在a集合中是否存在(前提是a集合或者b集合不是空表)
int j = locateelem(a,i);
if (j == 0) nslog(@「a集合中並沒有該元素」);
else nslog(@「a集合中存在該元素」);
3.將已經確定不存在的元素插入到a集合中
int la = listlength(a);
listinsert(*a,la-1,j);
for (int i = 0; i <= listlength(b); i++) {
官方答案:
la_len = listlength(la);
lb_len = listlength(lb);
for (int i = 0 ; i <= lb_len ; i++)
5.順序儲存結構
6.實際問題
獲得元素
1 < i < listlength(l);
e = l.data[i-1];
插入操作
思路:如果插入位置不合理,丟擲異常;如果線性表長度大於等於陣列長度,則丟擲異常或動態增加陣列容量;從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移動乙個位置
7.線性表順序儲存結構優缺點
在儲存,讀取資料時,不管是哪個位置時間複雜度都是o(1).而在插入或者刪除時,時間複雜度都是o(n).
無需為表示表中元素之間的邏輯關係而增加額外的儲存空間
可以快速訪問表中任意位置的元素
插入和刪除操作需要移動大量元素
當線性表長度變化較大時,難以確定儲存空間的容量
容易造成儲存空間的碎片(申請空間時是整塊兒的)
8.鏈式儲存結構
10實際問題
假設p是指向線性表第i個元素的指標,則該結點ai的資料域我們可以用p->data表示,它的值是乙個資料元素,結點ai的指標域我們可以用p->next表示,它的值是乙個指標.那麼p->next指向的是第i+1個元素,也就是說它是指向第ai+1的指標
提問:如果p->data = ai,那麼p->next->data = ?
思路:題中說p->data代表ai元素的資料域,那麼p->next代表的是ai元素的指標域,代表指向ai+1元素的指標,所以p->next->data代表的是ai+1元素的資料域,也就是資料元素,即ai+1.
資料結構與演算法之線性表
1.線性表的基本概念 線性表是零個或多個資料元素的有序佇列.特性 資料元素之間是有順序的 資料元素個數是有限的 資料元素的型別必須相同.2.線性表的數學定義及性質 線性表是具有相同型別的n n 0 個資料元素的有限序列 a0,a1,a2.an ai是表項,n是表長度.性質 a0是線性表中的第乙個元素...
資料結構與演算法之線性表
線性表屬於資料結構中邏輯結構中的線性結構。回憶一下,資料結構分為物理結構和邏輯結構,邏輯結構分為線性結構 幾何結構 樹形結構和圖形結構四大結構。其中,線性表就屬於線性結構。剩餘的三大邏輯結構今後會一一介紹。線性表 list 由零個或多個資料元素組成的有限序列。注意 1.線性表是乙個序列。2.0個元素...
資料結構與演算法分析之線性表
最近面試了不少公司,發現多數公司要提問資料結構與演算法分析,所以這段期間又簡單回顧了下資料結構與演算法。列表內容 簡單來說呢程式 資料結構 演算法只不過是實現的語言不同而已,有人說,學習資料結構沒一點用,工作中一點用也沒有,這點仁者見仁智者見智,現在的大部分公司是業務為王,業務理解透了,能幹就幹,幹...