資料結構之迴圈鍊錶結構

2021-09-27 03:57:23 字數 2821 閱讀 1875

迴圈鍊錶結構是什麼?

你面前有一扇們,門上面有個數字0,開啟門,進去,你又看到一扇門,門上面寫著1,就這樣你開了十扇門,你抬頭一看,門上數字寫著9,你開啟了寫著9的這扇門,裡面還有一扇門,裡面這扇門赫然寫著數字0,你又回到了原點。可是你一直朝著乙個方向 在走呀,難道這是靈異事件,不對,恭喜你發現了程式的美麗。有一天早晨,你起床刷牙時候忽然想看看牙齒,啊~ 你張開口,發現口裡面還有乙個你,同樣張著嘴,發出啊~ 的聲音,你嘴裡的你的嘴裡還有乙個你在張著嘴發著啊~ 你瞬間驚醒了,原來是在做夢,想明白了這個,迴圈鍊錶結構差不多就該明白了吧。如果你還不明白,看著你面前的東西,對,就是面前任何的東西,你就開始想,我在看著這個東西,我在看著看著這個東西的我,我在看著看著這個東西的看著這個東西的我。。。 明白了吧。

迴圈鍊錶結構?

命運之蛇咬住了自己的尾巴,世界開啟了乙個新紀元。

命運之蛇吃掉了自己的尾巴,世界的壽命變短了。

命運之舌長大了,世界的壽命也因此變長了。

命運之蛇吃掉了自己,世界毀滅了。

開始單向迴圈鍊錶結構的構建。

底層實現:對節點類進行操作。

單向迴圈鍊錶實現了list介面

public inte***ce list

public node(e data, node next)

} // 節點構造好了,需要對頭和為進行標記

private node head;

private node rear;

private int size;

// 對操作工具進行例項化

public loopsingle001()

public int getsize()

public boolean isempty()

// 根據下標插入元素

public void add(int index, e e)

node n = new node(e, null); // 建立乙個新節點,並讓它的下一跳指向空,便於頭插和尾插

// 非空判斷

if (isempty()) else else if (index == size)

// n.next=p.next;

// p.next=n;

// size++;

//如果插入位置index==size 那麼插向尾部的下乙個節點

rear.next=n;

n.next=head;

rear=n;

size++;

} else

p.next=n;

n.next=p.next;

size++;

}} }

// 表頭新增元素

public void addfirst(e e)

// 表尾新增元素

public void addlast(e e)

// 在表中根據指定角標獲取元素,指定角標大於0小於角標的個數size

public e get(int index)

// 根據index獲取節點,怎麼獲取?從頭結點0開始向後遍歷,直到index處,獲取。

if (index == 0)

return head.data;

if (index == size)

return rear.data;

node p = head;

for (int i = 0; i < index; i++)

return p.data;

} // 獲取表頭元素 返回值為表頭元素 0

public e getfirst()

// 獲取表尾元素 返回值為表尾元素 size-1

public e getlast()

// 修改線性表中指定index處的元素為e 沒有返回值

public void set(int index, e e)

node p = head;

if (index == 1)

if (index == size)

for (int i = 0; i <= index; i++)

p.data = e;

} // 判斷線性表中是否包含指定元素e 引數為e 返回值為boolean

public boolean contains(e e)

public int find(e e) else if(p.data==rear.data)else

} return -1;

} public e remove(int index)

e e = null;

node p = head;

if (index == 0) else if (index == size)

e = rear.data;

p.next = rear.next;

rear=p;

size--;

return e;

} else

e = p.next.data;

p.next = p.next.next;

size--;

return e;

} }public e removefirst()

public e removelast()

public void removeelement(e e)

// 清空線性表 無返回值 無引數

public void clear()

public string tostring() else else

p = p.next;

}} return sb.tostring();

}}

資料結構之迴圈鍊錶

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

資料結構之迴圈鍊錶

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

資料結構之迴圈鍊錶

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