1、迴圈單鏈表就是在單鏈表的基礎上,把最後乙個節點指向第乙個節點。
2、下面用迴圈單鏈表來實現約瑟夫環。
比如圓桌坐著5個人編號:1,2,3,4,5
指定從3開始報數,報到2的人退出,那麼
第一次報數:3開始,4退出
第二次報數:5開始,1退出
第三次報數:2開始,3退出
第四次報數:5開始,2退出
最後剩下5,所以5勝出。
3、實現**如下:
#include //每乙個節點
typedef struct linklink;
//初始化迴圈鍊錶
link *initlink(int max)
tmp ->next = p; //把最後乙個節點指向第乙個節點,實現迴圈
return p;
}link *killall(link *p,int start,int add)
link *startnode = tmp->next->next; //找到下一次開始報數人
link *drop = tmp->next; //要退出的人
if(drop == p) //如果要退出的人是第乙個節點,那就把p指向下一次的報數人
p = startnode;
printf("要退出的人:%d,下乙個開始報數人:%d\n",drop->data,startnode->data);
free(drop); //釋放空間
while(startnode->next != startnode)
return p;
}//輸出鍊錶中的成員
void display(link *p)
printf("%d",tmp->data); //不要把最後乙個元素忘了
printf("\n");
}int main()
資料結構 線性表之單鏈表
線性表 亦作順序表 是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存結構 順序儲存結構,即儲存單元在一段連續的位址上儲存,常見的陣列就是順序儲存結構的線性表 鏈式儲存結構,即儲存單元...
資料結構C C 線性表和單鏈表
在vs2005下面測試通過.最基本的 code include stdafx.h include include stdio.h include using namespace std typedef int type typedef struct lnodelnode,linklist linkl...
資料結構專題 線性表之單鏈表
對比了好幾本書,比較少涉及單鏈表的賦值,為了親自跑出其他功能,花了不少時間,畢竟是打基礎嘛,相信以後會越來熟練 你為什麼那麼熟練,明明是我先 話不多說,下面是 及實驗結果。include include define elementtype int define maxsize 1000 defin...