1. 程式人生 > >Java程式設計題解與上機指導(第四版)第七章 Java語言的高階特性 7.2藉助泛型定義一個線性表

Java程式設計題解與上機指導(第四版)第七章 Java語言的高階特性 7.2藉助泛型定義一個線性表

線性表:由相同型別的物件組成的一個線性結構

360百科:

定義

線性表(linear list)是資料結構的一種,一個線性表是n個具有相同特性的資料元素的有限序列。資料元素是一個抽象的符號,其具體含義在不同的情況下一般不同。

在稍複雜的線性表中,一個數據元素可由多個數據項(item)組成,此種情況下常把資料元素稱為記錄(record),含有大量記錄的線性表又稱檔案(file)

線性表中的個數n定義為線性表的長度,n=0時稱為空表。在非空表中每個資料元素都有一個確定的位置,如用ai表示資料元素,則i稱為資料元素ai線上性表中的位序。

線性表的相鄰元素之間存在著序偶關係。如用(a1,…,ai-1,ai,ai+1,…,an)表示一個順序表,則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素。當i=1,2,…,n-1時,ai有且僅有一個直接後繼,當i=2,3,…,n時,ai有且僅有一個直接前驅 。

特徵

1.集合中必存在唯一的一個"第一元素"。

2.集合中必存在唯一的一個 "最後元素" 。

3.除最後一個元素之外,均有 唯一的後繼(後件)。

4.除第一個元素之外,均有 唯一的前驅(前件)。

基本操作摺疊基本操作

1)MakeEmpty(L) 這是一個將L變為空表的方法

2)Length(L) 返回表L的長度,即表中元素個數

3)Get(L,i) 這是一個函式,函式值為L中位置i處的元素(1≤i≤n)

4)Prior(L,i) 取i的前驅元素

5)Next(L,i) 取i的後繼元素

6)Locate(L,x) 這是一個函式,函式值為元素x在L中的位置

7)Insert(L,i,x)在表L的位置i處插入元素x,將原佔據位置i的元素及後面的元素都向後推一個位置

8)Delete(L,p) 從表L中刪除位置p處的元素

9)IsEmpty(L) 如果表L為空表(長度為0)則返回true,否則返回false

10)Clear(L)清除所有元素

11)Init(L)同第一個,初始化線性表為空

12)Traverse(L)遍歷輸出所有元素

13)Find(L,x)查詢並返回元素

14)Update(L,x)修改元素

15)Sort(L)對所有元素重新按給定的條件排序

16) strstr(string1,string2)用於字元陣列的求string1中出現string2的首地址

例題程式碼

摺疊

/*藉助正規化定義一個線性表*/
import java.util.ArrayList;
//java.util  是實用工具類庫,提供了一些實用的方法和資料結構。ArrayList:詳細介紹見大佬部落格:https://www.cnblogs.com/xinhuaxuan/p/6344150.html
import java.util.List;
public class ListDemo {//定義一個類
	public static void main(String args[])
	{
		int numberLength=10;//定義一個引數存放數字長度
		int deleteNumber=5;//定義一個引數存放要刪除的數字5
		List<Integer>list =new ArrayList<Integer>();//List<Integer>定義了List只能存放integer類,別的型別會報錯;此處list為integer
		init(numberLength,list);//呼叫函式
		delete(deleteNumber,list);//呼叫刪除數字函式
		print(list);//列印結果
	}
	
	private static void print(List<Integer>list)
	{
		for(int i=0;i<list.size();i++)//遍歷數字,列印結果;size()方法:檢視list泛型有多少個元素
		{
			System.out.print(list.get(i)+"\t");//get獲取資料
		}
	}
	
	private static void delete(int deleteNumber,List<Integer>list)
	{
		for(int i=0;i<list.size();i++)//遍歷數字
		{
			if((int)list.get(i)==deleteNumber)//找到要刪除的數;(int)強制型別轉換
			{
				list.remove(i);//刪除物件i;List的Remove方法在刪除元素的時候總會保持下標連續。例如,刪掉第一個元素的時候,後面的元素會依次往前覆蓋。			}
		}
	}
	
	private static void init(int numberLength,List<Integer>list)
	{
		for(int i=1;i<=numberLength;i++)//往List裡新增1~10數字
		{
			list.add(i);//新增元素
		}
	}
}

執行結果