集合的順序儲存是通過陣列來實現的,集合的鏈式儲存是通過儲存結點之間的鏈結來實現的,從而形成鍊錶。鍊錶中的每乙個結點都包含乙個值域和乙個指標(即引用物件域),每個結點的指標指向下乙個結點物件,這樣的鍊錶稱之為單鏈表。在單鏈表中,第乙個結點稱之為表頭結點,指向第乙個結點的指標被稱為表頭指標,最後乙個結點稱為表尾結點,表尾結點的指標為空。通常,為了方便插入和刪除結點,通常在表頭結點增加乙個無值的結點,我們稱之為附加頭結點,用head表示,如鍊表為空,附加頭結點的指標域指向自身,指標域為空,若煉表不為空,則附加頭結點的指標指向第乙個結點。如下圖所示。我們定義類名為node,數值域和指標域分別用element和next表示。該類包括兩個構造方法,乙個只帶有結點引用物件引數,實現對當前next結點的賦值;另乙個帶有兩個引數,分別實現對當前結點的值域element和指標域next的賦值。node結點的定義如下:public
class node
public
node(object element,node next)
}
1 、初始化集合,首先我們要定義附加頭結點head為null和鍊錶的長度length為0,然後再定義乙個無參構造方法。public
class linkedset
}
2 、向集合中新增乙個元素public
boolean
add(object obj)else
}temp.next = new node(obj,null); //temp為鍊錶的最後乙個結點,並在該結點後建立乙個新的結點
length++; //鍊錶的長度加1
return
true;
}
3 、從集合中刪除乙個元素public boolean remove(object obj)
temp = temp.next; //修改temp,指向後繼結點
}if(temp.next!=null)
return
false; //刪除失敗返回false
}
4 、判斷乙個元素是否屬於該集合public
boolean
contains(object obj)
temp = temp.next; //修改temp,指向後繼結點
}return
false; //若不存在,則返回false
}
5 、返回集合中第i個元素的值public object get(int
index)
node temp = head; //定義乙個node型別的臨時變數,指向附加頭結點
int i = 1;
while(i<=index)
return temp.element; //返回查詢結點的內容
}
6 、從集合中按值查詢元素public object find(object obj)
temp = temp.next; //修改temp,指向後繼結點
}return
null; //查詢失敗返回null
}
7 、返回集合的長度public
intsize()
8 、判斷集合是否為空public
boolean
isempty()
9 、輸出集合的所有元素public
void
print()
system.out.println();
}
10 、求兩個集合的並集public linkedset union(linkedset set)
//settemp新增set集合的元素
node h = set.head.next;
while(h!=null)
return settemp;
}
11 、求兩個集合的交集public linkedset intersection(linkedset set)
temp = temp.next; //temp指向後繼結點
}
return settemp;
}
12 、清除集合中的所有元素public
void
clear()
單向鍊錶的具體操作還是比較簡單的,通過與集合的順序表相比,我們很明顯的發現,鍊錶的插入和刪除比順序表要方便的多,順序表需要對陣列元素進行移動,而鍊錶只需要改變指標域即可。但是對於查詢操作來說順序表效率更高,通過索引即可查詢,而鍊錶則需要進行遍歷,大大的降低了效率。集合的鏈式儲存及操作實現
typedef int elemtype typedef struct snode node 1.初始置空集合,即置表頭指標為空 void initset node head 2.向集合中插入乙個元素,插入這裡在表頭插入 bool insertset node head,elemtype item ...
堆疊的鏈式儲存實現
棧的鏈式儲存結構其實實際上就是乙個單鏈表,叫做鏈棧,插入和刪除操作只能在棧頂操作 若在棧尾,則無法對堆疊進行刪除操作 棧的鏈式儲存結構其實實際上就是乙個單鏈表,叫做鏈棧,插入和刪除操作只能在棧頂操作 若在棧尾,則無法對堆疊進行刪除操作 typedef str uct nodelinkstack li...
堆疊的鏈式儲存實現
include using namespace std typedef int elementtype typedef struct snode stack struct snode 1.建立乙個空棧 stack createstack 2.判斷堆疊是否為空 intisempty stack ptr...