大話資料結構(三) 單向迴圈鍊錶的java實現

2021-08-01 12:03:55 字數 1987 閱讀 7197

首先,我們來說說什麼是單向迴圈鍊錶:

單向迴圈鍊錶就是單鏈表的另外一種表現形式,其結構特點是最後乙個指標不再是結束標記,而是指向整個鍊錶的第乙個結點,從而使單鏈表形成乙個環,就像將一根鐵鍊子首尾連線形成乙個鐵鍊環一樣。

在單鏈表中,由於每個結點只儲存了向後的指標,到了尾標誌就停止了向後鏈的操作,這樣當中的某一結點就無法找到他的前驅結點了,即無法回到之前的結點。這就體現出了單鏈迴圈鍊錶的劣勢。

說了這麼多,我們來看看單向迴圈鍊錶的實現方法和測試程式吧~~

定義迴圈鍊錶cyclelinklist

其中頭結點為header,尾結點為tail,鍊錶大小為size,類中包含有刪除、插入、查詢、清空等操作。

package cyclelinklist;

/** * created by jiangxs on 17-5-22.

*/public class cyclelinklist

//初始化全部屬性的構造器

public node(t data,node next)

}private node header;//儲存頭結點

private node tail;//儲存尾節點

private int size;//儲存已含有的結點數

//建立空鍊錶

public cyclelinklist(){}

//以指定資料元素建立鍊錶,只有乙個元素

public cyclelinklist(t element)

//返回鍊錶長度

public int getsize()

//獲取指定位置的結點

public node getnodebyindex(int index)}}

/*** 刪除索引處的元素

* @param index

* 輸入要刪除的位置

*/public t delete(int index)

//如果刪除的是尾結點

else if (index == size-1)

//如果刪除的是中間結點

else if (index > 0 && index < size-1)

size--;

return del.data;

}//刪除最後乙個元素

public t remove()

//判斷鍊錶是否為空

public boolean isempty()

//清空線性表

public void clear()

public string tostring()}}

測試**

package cyclelinklist;

/** * created by jiangxs on 17-5-22.

*/public class cyclelinklisttest

}

測試結果

原有迴圈鍊錶中的元素: 

[haha->hehe->xixi]

迴圈煉表頭結點插入後鍊錶中的元素:

[hiahia->haha->hehe->xixi]

迴圈鍊錶2處插入元素後鍊錶中的元素:

[hiahia->haha->heihei->hehe->xixi]

迴圈鍊錶2處刪除元素後鍊錶中的元素:

[hiahia->haha->hehe->xixi]

迴圈鍊錶末尾處刪除元素後鍊錶中的元素:

[hiahia->haha->hehe]

迴圈鍊錶中元素haha的位置: 1

迴圈鍊錶中位置1的元素: haha

迴圈鍊錶的長度為: 3

process finished with exit code 0

參考:《大話資料結構》

資料結構(三) 鍊錶3 單向迴圈鍊錶

孩子節點 class boypublic intgetno public void setno int no public boy getnext public void setnext boy next override public string tostring 建立乙個單向環形鍊錶的思路 1...

資料結構 單向迴圈鍊錶

typedef struct node node,pnode pnode init link list void 單鏈表初始化 phead next phead return phead pnode new node int dat bool insert node tail pnode phead...

資料結構之單向迴圈鍊錶

基於單向鍊錶 將最後乙個節點 指向 頭結點 ifndef cirlinklist h define cirlinklist h typedef enum bool typedef int data typedef struct node node typedef struct list list 建...