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);//新增元素
}
}
}
執行結果