「線性表」:由同型別資料元素構成有序序列的線性結構
表中元素個數稱為線性表的長度線性表沒有元素時,稱為空表表起始位置稱為表頭,表結束為止稱為表尾型別名稱:線性表(list)
資料物件集:線性表是n(≥0)個元素構成的有序序列(a1,a2,…,an)
操作集:線性表l ∈ list,整數i表示位置,元素x∈ elementtpye,線性表的基本操作有:
1、list makeempty():
初始化乙個空線性表l;
2、elementtype findkth(int k,list l):
根據位序k,返回相應元素;
3、void insert(elementtype x,int i,list l):
在位序i前插入乙個新元素x;
5、void delete(int i,list l):
刪除指定位序i的元素;
6、int length(list l):
返回線性表l的長度n。
利用陣列的連續儲存空間順序存放線性表的個元素
注:順序儲存中i是序號的下標,從0開始
標頭檔案命令及結構體格式:
#include
#define maxsize 100
//maxsize定義為data陣列的大小
typedef
struct lnode*list;
struct lnode
;struct lnode l;
list ptrl;
//訪問下標為i的元素:l.data[i]或者ptrl->data[i]
//線性表的長度:l.last+1或者ptrl->last+1
主要操作的實現://初始化(建立空的順序表)
list makeempty()
//按值查詢
intfind
(elementtype x,list l)
//elementtype 可以為任意型別
//插入操作實現
void
insert
(elementtype x,
int i,list l)
//elementtype 可以為任意型別
if(i<
1||i>l->last+2)
for(j=p->last;j>=i-
1;j--
) l->data[j+1]
=l->data[j];//從後往前挪乙個,給a[i]騰出位置
l->data[i]
=x;//新元素插入
l->last++
;//last仍然指向最後元素
return
;}
//刪除(刪除表的第i(l<=i<=n)個位置上的元素)
void
delete
(int i,list l)
for(j=i,j<=l->last;j++
)//從前往後依次向前挪乙個,將a[i]覆蓋了
l->data[j-1]
=l->data[j]
; l->last--
;return
;// last仍然指向最後元素
}
//按序查詢
elementtype findkth
(int k,list l)
return l->data[k]
;}
//求表長
intlength
(list l)
//test
intmain()
不要求邏輯上相鄰的兩個元素物理上也相鄰;通過「鏈」建立起資料元素之間的邏輯關係。
標頭檔案命令及結構體格式:
#include
#include
typedef
struct elementtype;
//elementtype可以定義為任意型別
typedef
struct lnode*list;
struct lnode
;struct lnode l;
list l;
主要操作的實現://初始化鍊錶
list makeempty()
//以遍歷鍊錶的方法求鍊錶長度
intlength
(list l)
return j;
}
//按序號查詢
list findkth
(int k,list l)
if(i==k)
return p;
//找到第k個,返回指標
else
return
null
;//否則返回空值
}
//按值查詢
list find
(elementtype x,list l)
//插入
list insert
(elementtype x,
int i,list l)
p=findkth
(i-1
, l)
;//查詢第i-1個結點
if(p==
null
)//第i-1個結點不存在
else
}
//刪除
list delete
(int i,list l)
p=findkth
(i-1
,l);
//查詢第i-1個結點
if(p==
null
||p->next==
null
)else
}
//輸出鍊錶元素
void
print
(list l)
if(flag)
printf
("null");
printf
("\n");
}//8.測試
intmain()
1. 兩個有序鍊錶序列的合併 這是一道c語言函式填空題,訓練最基本的鍊錶操作。一定要做;
2. 一元多項式的乘法與加法運算 在「小白專場」裡,我們會詳細討論c語言實現的方法。本題一定要做;
3. reversing linked list 根據某大公司筆試題改編的2023年春季pat真題,不難,可以嘗試;
4. pop sequence pop sequence 是2023年pat春季考試真題,考察隊堆疊的基本概念的掌握,應可以一試。
資料結構(二) 線性表
線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...
資料結構實驗二 線性表
一 實驗目的 鞏固線性表的資料結構,學會線性表的應用。1.回顧線性表的邏輯結構,線性表的物理儲存結構和常見操作。2.學習運用線性表的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.建立乙個n個學生成績的順序表,對錶進行插入 刪除 查詢等操作。分別輸出結果...
資料結構複習二 線性表
寫在前面 考完離散就剩兩天覆習資料結構,還有七章,我可能要沒了 衝衝衝!定義是 由n 0 個資料特性相同的元素構成的有限序列n 0時為空表 非空線性結構的特點 1 第乙個 元素唯一 2 最後乙個 元素唯一 3 除第乙個之外,資料結構中的每個資料元素均只有乙個前驅 4 除最後乙個之外,每個資料元素均只...