C 資料結構第29課 迴圈鍊錶的實現

2021-10-09 04:37:20 字數 2466 閱讀 1928

1、什麼是迴圈鍊錶

— 概念上:

1、任何資料元素都有乙個前驅和乙個後繼

2、所有的資料元素的關係構成乙個邏輯的環

2、迴圈鍊錶的邏輯構成

3、迴圈鍊錶的繼承層次結構

4、迴圈鍊錶的實現思路

node* last()		//指向尾結點

void last_to_first()

5、迴圈鍊錶的實現要點— 插入位置為 0 時:

bool insert(int i, const t& e)		//相比較前面插入,多了乙個在插入位置為 0 時尾結點指向首結點的操作。

return ret;

}

— 刪除位置為 0 時:

}實現:

circlelist.h

#ifndef circlelist_h

#define circlelist_h

#include "linklist.h"

namespace xiebslib

node* last()const

void last_to_first()const

public:

bool insert(int i, const t& e)

return ret;

}bool insert(const t& e)

bool remove(int i)

}else

this->destroy

(todel);}

else

}else

return ret;

}bool set(int i, const t& e)

bool get(int i, t& e)const

t get(int i)const

int find(const t& e)const

slider = slider->next;

} return ret;

}void clear()

if(this->m_length == 1)

}bool move(int i, int step)

bool end()

~circlelist()};

}#endif // circlelist_h

6、迴圈鍊錶的應用— 約瑟夫環問題

void josephus(int n, int s, int m) //有多少個人玩這個遊戲,從第幾個人開始報數,報到多少

cl.move

(s-1, m-1)

; //n-1是因為要從下標為0開始,m-1是因為1到3之間隔了兩個,移動兩次

資料結構C 迴圈鍊錶

我曾經去一家遊戲公司面試時遇到乙個筆試題,大意就是說有一群人出去旅遊,在河中遇到了大風,然後用轉盤決定誰在留在船上,誰自己跳下去自行解決生存問題。大家圍成乙個圈,啟動轉盤,轉盤指向誰就從睡開始數數,當有人數到13時,誰就跳下去,然後從下乙個人開始從頭數,當再有人數到13時,繼續上乙個迴圈。當時題意沒...

資料結構與演算法(五) 迴圈鍊錶 雙向迴圈鍊錶的實現

資料結構與演算法 二 python 單向鍊錶及其排序 資料結構與演算法 三 python實現雙向鍊錶並遍歷 今天分別對單鏈表和雙向鍊錶新增迴圈,使之分別成為迴圈單鏈表 迴圈雙向鍊錶。本次實現,均使用了哨兵結點,也即在建立鍊錶之前的初始化部分,已經自動建立了乙個內容為none的節點,這樣做的目的是為了...

資料結構實驗一,第29題 雙向迴圈鍊錶中結點的交換

要到截止日期了,衝衝衝!描述 利用雙向迴圈鍊錶表示乙個整數序列,指定乙個結點位置用p指向該結點,交換p所指向的結點及其前驅結點的順序。輸入 多組資料,每組資料有三行,第一行為鍊錶的長度n,第二行為鍊錶的n個元素 元素之間用空格分隔 第三行為p所指向的結點位置。當n 0時輸入結束。輸出 對於每組資料分...