分別實現3種型別的鍊錶,這一篇用陣列來實現線性表---
有序鍊錶:鍊錶元素或節點始終保持有序,鍊錶元素為comparable物件,主要體現在插入操作要插入在相應的序列位置
無序鍊錶:無序,每次指定插入在哪(表頭,尾,or指定元素之後)
將三種實現的都有的公共操作定義在乙個介面adt中,對應於各自特徵所特有的操作擴充套件在自己的類中,可以看到,其實就是插入操作(add)不同而已。
以上說明具體見下列adt定義中的注釋:
鍊錶adt:
packagelist;
/*1,我們將實現3中型別的鍊錶:有序鍊錶的元素是可比較物件,在插入刪除時始終維持鍊錶有序;無序鍊錶是無序的,
* 插入時指定插入位置(鍊錶首,尾,或指定元素之後);索引鍊錶可以根據索引來訪問元素(例如返回某個元素的索引,
* 返回某個索引上的元素,在某個索引處刪除或插入元素等等)。他們的區別就在於插入的操作不一樣。
* 2,將有序鍊錶,無序鍊錶,索引鍊錶的公共操作定義為介面,不同的操作在類中擴充套件
*/public
inte***ce
listadt
1,有序鍊錶的陣列實現
成員定義:
privateobject contents;
private
intrear;
//將鍊錶的一端固定在0,rear表示下乙個可用單元的下標(也表示長度)
private
static
intsize =10
; 構造方法和陣列動態擴充套件:
publicarrayorderedlist()
public
void
expand()
有序鍊錶的實現:
packagelist;
public
class
arrayorderedlist
implements
listadt
public
void
expand()
//三種鍊錶的介面公共操作(實現是一樣的)
public
intsize()
public
boolean
isempty()
public
boolean
contains(object element)
public
object first()
public
object last()
public
object removefirst()
object result
=contents[0];
for(
intindex =0
;index
<
rear -1
;index++)
contents[index]
=contents[index+1
];rear--;
return
result;
}public
object removelast()
object result
=contents[rear-1
];contents[rear-1
] =null;//
也可以不置空,下次覆蓋
rear--;
return
result;
}public
object remove(object element)
for(
intindex =0
;index
<
rear;index++)
if(contents[index].equals(element))
rear--;
return
result;
}return
null;}
//有序鍊錶擴充套件的操作
public
void
add(comparable element)
contents[rear]
=element;
rear++;
}}
2,無序鍊錶的陣列實現
就是add操作不一樣,其他完全相同,只貼出擴充套件部分不同的幾個操作:
//無序鍊錶擴充套件的操作
public
void
addtofront(object element)
public
void
addtorear(object element)
public
void
addafter(object after,object element)}
3,索引鍊錶的陣列實現
擴充套件的不同操作:
//索引鍊錶擴充套件的操作
public
void
add(object element)
public
void
add(
intindex,object element)
public
void
set(
intindex,object element)
contents[index]
=element;
}public
object get(
intindex)
public
intindexof(object element)
return-1
;}public
object remove(
intindex)
return
null;}
陣列實現的很多地方都在移動元素,在插入和刪除上沒有優勢,它的優勢在於隨機訪問。
線性表 陣列實現
include include includeusing namespace std define ms a memset a,0,sizeof a define maxlength 100 線性表陣列實現,定義乙個具有兩個域結構體,陣列下標為0的地方不存放元素,可以使位置i對應整數i 第乙個域是陣...
線性表陣列實現
線性表 順序表示 用陣列實現,比較簡單 線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素,在高階語言程式設計中,陣列具有隨機訪問的特性,因此通常都用陣列來描述資料結構中的順序儲存結構,對於線性表,可以用一維陣列來實現 1 順序表的初始化 定義乙個object型別的陣列,可儲存任...
用陣列實現線性表
對於線性結構,有兩種儲存的方法,一種是使用 c語言中內建的陣列,這樣的結構成為 順序表 另一種使用指標,這樣的結構成為鍊錶。對於線性結構,有12種基本的操作,分別是 初始化 刪除順序表 清空順序表 判斷是否為空 遍歷 求表的長度 求某個元素在表中的位置 返回特定序號的元素 求某個元素的前乙個元素 求...