迴圈鍊錶的介紹
在單向鍊錶和雙向鍊錶中,都採用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的時候,存在環。迴圈鍊錶,只...