1.線性結構的特點?
- 非空時,存在唯一的一個被稱爲“第一個”的數據元素;
- 非空時,存在唯一的一個被稱爲“最後一個”的數據元素;
- 非空時,除第一個外,集合中的每個數據元素均只有一個前驅;
- 非空時,除最後一個外,集合中的每個數據元素均只有一個後繼。
2.什麼是線性表?
- n個數據元素的有限序列;
- 最常用且最簡單的一種數據結構;
3.線性表的特點是什麼?
- 非空表中,每個數據元素都有一個確定的位置;
- i=1,2,3…,n-1,a(i)有且僅有一個直接後繼;
- i=2,3,4…,n,a(i)有且僅有一個前驅;
4.什麼是數據項?
- 如表格中某一列某一行中的數據;
- 一個數據元素可以由若干個數據項組成,如表格中的每一行數據,即爲一個數據元素;
5.什麼是記錄?
- 即數據元素
6.什麼是文件?
- 含有大量記錄的線性表稱爲文件。
7.抽象數據類型線性表的定義?
ADT List{
數據對象:D={
a(i) | a(i) ∈ ElemSet,
i=1,2,3......,n,
n >= 0
}
數據關係:Rl={
<a(i-1),
a(i) > a(i-1),
a(i) ∈ D,
i=2,3,4......,n
}
基本操作:
InitList( &L )
操作結果:構造一個空的線性表L。
DestroyList(&L)
初始條件:線性表L已存在;
操作結果:銷燬線性表L。
ClearList(&L)
初始條件:線性表L已存在;
操作結果:將L重置爲空表。
ListEmpty(L)
初始條件:線性表L已存在;
操作結果:若L爲空表,則返回true,否則返回false
ListLength(L)
初始條件:線性表L已存在;
操作結果:返回L表中數據元素的個數。
GetElem(L,i,&e)
初始條件:線性表L已存在,且1<= i <= ListLength(L).
操作結果:用e返回L中第i個數據元素的值;
LocateElem(L,e,compare())
初始條件:線性表L已存在,compare()是數據元素判定函數。
操作結果:返回L中,第一個與e滿足關係compare()的數據元素的位序。若這樣的數據元素不存在,則返回值爲0
PriorElem(L,cur_e,&pre_e)
初始條件:線性表L已存在。
操作結果:若cur_e是L的數據元素,且不是第一個,則用pre_e返回它的前驅;否則操作失敗,pre_e無定義。
NextElem(L,cur_e,&next_e)
初始條件:線性表L已存在。
操作結果:若cur_e是L的數據元素,且不是最後一個,則用next_e返回它的後繼;否則操作失敗,next_e無定義。
ListInsert(&L,i,e)
初始條件:線性表L已存在,且1《= i〈=ListLength(L)+1。
操作結果:在L中第i個位置之前,插入新的數據元素e,L的長度加1.
ListDelete(&L,i,&e)
初始條件:線性表L已存在且非空,且1《= i〈=ListLength(L)。
操作結果:刪除L中第i個數據元素,並用e返回其值,L的長度減1.
ListTraverse(L,visti())
初始條件:線性表L已存在。
操作結果:依次對L的每個數據元素調用函數visit()。一旦visit()失敗,則操作失敗。
}ADT List
8.線性表並集算法?
void union(List &La,List Lb){
//將所有在線性表Lb中,但不在La中的數據元素插入到La中
La_len = ListLength(La);
Lb_len = ListLength(Lb); //求線性表的長度
for(i=1,i<=Lb_len,i++){
GetElem(Lb,i,e); //取Lb中第i個數據元素賦給e
if( !LocateElem(La,e,equal) ){ //La中不存在和e相同的數據元素,則插入之
ListInsert(La,++La_len,e)
}
}
} //union
9.歸併有序線性表算法?
10.什麼是位序?