線性表

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.什麼是位序?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章