迴圈單鏈表 JAVA

2021-08-04 02:32:54 字數 1887 閱讀 3765

前兩章寫了單鏈表的操作,在這裡,寫了乙個迴圈單鏈表。為了更好地實現各操作,在此引入頭結點,這裡的頭結點與前兩章定義的頭結點不同,前兩章的頭結點即首節點,而這裡的頭結點並不是首節點。這樣說可能有些糊塗。那就再詳細地解釋一下頭結點和首節點的區別,頭結點是物理上的第乙個節點,但是它存放的不是我們所需要的資料,而是鍊錶的一些資訊,如鍊表的長度等,也可以是null,當鍊表為空時,頭結點為空,但是它存在,它的next指向自身,假設頭結點宣告為head,那麼鍊錶為空時的條件為head.next=head;若煉表不為空,則head.next指向邏輯上的第乙個節點,這個邏輯上的第乙個節點就是首節點,首節點是什麼呢?比如我們現在鍊錶中存放的是教師職工的資訊,第乙個老師的編號是001,那麼第乙個節點中存放的就是編號為001的教工資訊。這個存放001教工資訊的節點就是首節點。首節點是邏輯上的第乙個節點,是物理上的第二個節點。如果還是不明白,參照下圖再看一遍:

在上圖中,first存放的是教工001的資訊,second存放的是教工002的資訊。在head中,存放的是鍊錶的資訊,不存放教工資訊。若該鍊錶為空,則為下圖所示,head的next指標指向自身。

下面是迴圈單鏈表的具體操作實現**:

package listlink;

/* * 迴圈單鏈表的簡單操作

*/public class circlelinklist

//在尾部插入資料

public void addnodeend(teacher teacher)

//在頭部插入資料

public void addnodefirst(teacher teacher)

/** 根據使用者需求將資料插入鍊錶中

* 此處的index最好不要傳值為0,若傳值為0,則將頭結點覆蓋,此時只有乙個節點,即頭結點,

* 若傳值為0 後繼續新增節點,則繼續新增,在此步驟之前鍊錶中的節點資料則不存在了

*/public void addnode(int index,teacher teacher)

node.next=current;

previous.next=node;

len++;

tmp=0;

} //在尾部刪除資料

public void deletenodeend()

previous.next=first;

len--;

} //刪除頭部資料

public void deletenodefirst()

/** 刪除任意位置的資料

* 此處若寫刪除0節點的資料是無用的

* 另外,若此處實現的是刪除0節點,該鍊錶長度不變

* 盡量不要刪除0節點

* */

public void deletenode(int index)

previous.next=current.next;

len--;

tmp=0;

} //查詢某位置的節點資訊並列印出來

public void getnodeindex(int index)

tmp=0;

system.out.println("查詢的教工資訊是:");

node.display();

system.out.println("查詢結束");

} //查詢滿足某條件的資訊並列印出來

public void getnodedata(teacher teacher)

{ int temp=0;

node node=first;

for(int i=0;i

java 帶頭迴圈單鏈表

首先建立乙個介面 public inte ce iclinked然後實現介面 public class headsinglelistimpl implements iclinked 資料節點 public node int data private node head public headsing...

迴圈單鏈表的實現java

迴圈鍊錶 circle linked list 是另一種形式的鏈式儲存結構 它的特點是表中最後乙個節點的指標域指向頭結點 整個鍊錶形成乙個環,由此,從表中任一點出發均可以找到表中其他節點 package linklist 單向迴圈鍊錶 class element 有參構造方法 public elem...

迴圈單鏈表

include include include include define random x rand x typedef int status typedef int elemtype typedef struct lnode lnode typedef struct linklist link...