資料結構與演算法之迴圈鍊錶 《三》

2021-07-28 07:04:21 字數 1843 閱讀 7998

迴圈鍊錶的介紹

在單向鍊錶和雙向鍊錶中,都採用null作為鍊錶的結束,然而,迴圈鍊錶沒有結束標誌。

注意與單向鍊錶不同,迴圈鍊錶沒有next指標為null的點,迴圈鍊錶在某些情況下非常有用。 比如在程序的迴圈排程中。

迴圈鍊錶的建立

public

class node

public

void

setdata(e data)

public nodegetnext()

public

void

setnext(nodenext)

}

3.迴圈鍊錶的插入

// 在煉表表尾增加鍊錶節點

public

void add(e obj) else

}// 在指定中間位置增加節點

public

void add(int

index, e element)

// 判斷位置是否超出界限

else

if ((index

< 0) || (index > this.size())) else

// 尾節點插入

else

if (index == this.size())

// 中間插入

else

node.setnext(hnode.getnext());

hnode.setnext(node);}}

}

4.迴圈鍊錶的刪除

// 移除此列表中指定位置上的元素

public

void remove(int

index) else

if ((index

< 0) || (index >= this.size())) else

// 刪除尾節點

else

if (index == (this.size() - 1))

hnode.setnext(headnode);

// system.out.println(index + "號:" + endnode.getdata() + "

// 移除成功");

endnode = hnode;

}// 刪除中間節點

else

// e data = hnode.getnext().getdata();

hnode.setnext(hnode.getnext().getnext());

// system.out.println(index + "號:" + data.tostring() + " 移除成功");}}

}

5.迴圈鍊錶的其他操作

// 返回此列表中指定位置上的元素。

public e get(int

index) else

index--;

}// 尾節點單獨檢測 為什麼是0因為index多執行了一次

if (index == 0) else

throw

new arrayindexoutofbound***ception("超出範圍");}}

// 返回此列表的元素數。

public

int size() else

return

count + 1;}}

// 用指定的元素替代此列表中指定位置上的元素。

public e set(int

index, e element)

迴圈鍊錶的基本操作就此結束

資料結構之迴圈鍊錶

迴圈鍊錶是資料結構中煉表的一種形式。相對於單向鍊錶,將單向鍊錶的尾結點的指標域指向該單向鍊錶的頭結點,就構成了迴圈鍊錶。可以這麼理解,單向鍊錶就是一張單程火車票,比如你要從北京坐火車去上海,路上經過濟南 南京,此時北京 濟南 南京 上海就構成了單向鍊錶的四個結點,如下圖所示。但是,單向鍊錶是有去無回...

資料結構之迴圈鍊錶

前面學習了鏈式結構鍊錶,鏈式結構鍊錶也有使用的侷限性。比如說我們經常碰到的迴圈關係,最經典的當然是約瑟夫問題了,那麼我們怎麼去解決約瑟夫問題呢?相信你看完本文章就會了,好了言歸正傳,我們生活中經常會遇到迴圈問題,例如,一年的12個月,春夏秋冬交替,這些迴圈關係怎麼在我們的程式體現出來,少廢話,上 第...

資料結構之迴圈鍊錶

首先先了解如何判斷單鏈表中是否有環 環的定義 鍊錶中的尾節點指向了鍊錶中的某個節點。方法一 使用p q兩個指標,p一直往前走,q每次從頭往前走,當p等於q但是p q移動的步數不相等的時候,存在環。方法二 使用p q兩個指標,p每次往前走一步,q每次往前走兩步,當存在p q的時候,存在環。迴圈鍊錶,只...