操作集:線性表∈list,元素x∈elementtype,線性表的基本操作有:
線性表的順序儲存實現
typedef
struct lnode *list;
struct lnode
;struct lnode l;
list ptrl;
//訪問下標為i的變數 l.data[i] / ptrl -> data[i]
//返回線性表的長度 l.last + 1 / ptrl -> last + 1
1.初始化(建立空的線性表)
//初始化線性表(建立空的順序表)
list makeempty()
2.查詢
int
find
(elementtype x,list l)
3.插入
void
insert
( list l, elementtype x,
int i)
if( i<
0|| ptrl -> last+1)
//從後往前移
/*如果把後移陣列元素的迴圈改為for ( j = i-1; j <= ptrl->last; j++ ) ptrl->data[j+1]=ptrl->data[j];
則data[i-1]到data[ptrl -> last]均為原來的data[i-1]*/
for( j = l->last; j>=p; j--
) l->data[j+1]
= l->data[j]
;/* 將位置p及以後的元素順序向後移動 */
l->data[i]
= x;
/* 新元素插入 */
l->last++
;/* last仍指向最後元素 */
return
;//平均移動次數n/2 時間複雜度o(n)
}
4.刪除
/* 刪除 */
void
delete
( list l,
int i )
for(
int j = i+
1; j <= l->last; j++
) l->data[i-1]
= l->data[i]
;/* 將位置p+1及以後的元素順序向前移動 */
l->last--
;/* last仍指向最後元素 */
return
;//平均移動次數(n-1)/2 時間複雜度o(n)
}
1.求表長
/*求表長*/
intgetlength
(list ptrl)
return j;
//時間複雜度o(n)
}
2.查詢
(1)按序號找
list findkth (
int k, list ptrl)
if(i==k)
return p;
//返回指標
else
return
null
;}
(2)按值查詢
lis find
(elementtype x, list ptrl)
3.插入(在第i-1個結點後插入乙個值為x的新結點)
①構造乙個新的結點,用s指向
②找到鍊錶的第i-1個結點,用p指向
③修改指標,插入結點(p之後插入新結點是s)
若兩個賦值語句順序交換,則p -> next 指向p,故不能正確完成插入
list insert
(elementtype x,
int i, list ptrl)
p =findkth
(i-1
, ptrl)
;//查詢第i-1個結點
if( p ==
null
)else
}
4.刪除
①找到鍊錶的i-1個結點,用p指向
②用s指標指向要被刪除的結點
③修改指標,刪除s指向的結點
④釋放s所指結點的空間
list delete
(int i, list ptrl)
p =findkth
(i-1
, ptrl)
;//查詢第i-1個結點
if( p ==
null
)else
if(p->next ==
null
)else
}
線性表的推廣
廣義表中的元素可能是單元素也可能是另乙個廣義表
//廣義表的構建
typedef
struct gnode *glist;
struct gnode gregion;
glist next;
//指向後繼結點
};
鍊錶中的某個結點可能隸屬於多個鍊錶 資料結構 2 1線性表及其實現
線性結構是資料結構裡面最基礎最簡單的一種資料結構型別,最典型的一種叫做線性表。舉個例子 如何用程式語言來表示這樣的乙個一元多項式及其相應的操作運算呢?順序儲存結構直接表示 用乙個陣列儲存第i項的係數ai,而指數對應這個分量的下標 這樣帶來的問題是什麼呢?假如我要表示x的兩千次方,陣列的大小就需要20...
浙大資料結構 2 1線性表及其實現
eg1 一元多項式及其運算 方法一 順序儲存結構直接表示。使用陣列下標表示指數,對應值表示係數。弊端 不適合非零項多 指數大的多項式。方法二 順序儲存結構表示非零項。使用二維陣列儲存指數和係數。弊端 不適合多項式的運算。方法三 鍊錶儲存非零項。由同型別資料元素,構成有序序列的線性結構。型別名稱 線性...
(筆記)資料結構2 1 線性表及其實現 一
例 一元多項式及其運算 一元多項式 f x a 0 a1 x an 1xn 1 a nsx 主要運算 多項式相加 相減 相乘等 方法1 順序儲存結構直接表示 陣列各分量對應多項式各項 a i 項 xi的系 數ai 例如 f x 4 x5 3 x2 1 表示成 問題 表示x x2000 浪費很多記憶體...