資料結構 迴圈鍊錶,約瑟夫環

2021-09-25 17:30:18 字數 1738 閱讀 9045

一、迴圈鍊錶

#include "stdio.h"

#include "stdlib.h"

typedef struct node

node;

初始化迴圈鍊錶

void ds_init(node **pnode)  // 初始化迴圈鍊錶, **pnode:鍊錶上

else

}}

返回結點所在位置

int ds_search(node *pnode, int elem)

if(target->next == pnode) // 表中不存在改元素

return 0;

else

return i;

}

/**********************************

功能:插入結點

引數:鍊錶的第乙個位置,插入的位置

**********************************/

void ds_insert(node **pnode, int i)

else

// 若i = 3 則target指向第三個元素

temp = (node *)malloc(sizeof(struct clinklist));

if(!temp)

exit(0);

temp->data = item;

p = target->next;

target->next = temp;

temp->next = p;

}}

刪除結點

void ds_delete(node **pnode, int i)

else

temp = target->next;

target->next = temp->next;

free(temp);

}}

二、約瑟夫環

#include "stdio.h"

#include "stdlib.h"

typedef struct node

node;

node *create(int n)

s->next = head->next;

} free(head); // 去掉頭結點構成環

return s->next;

}int main()

printf("%d->", p->next->data); // 列印第三個結點的資料

temp = p->next; // 將第三個結點暫時賦給temp

p->next = temp->next; // 第二個結點指標指向第四個結點

free(temp); // 釋放第三個結點

p = p->next; // p賦值為第四個結點

} printf("%d\n", p->data);

return 0;

}

三、問題

資料結構系列之鍊錶 迴圈鍊錶(約瑟夫環)

已知n個人,編號1到n,圍坐在一張圓桌周圍,從k開始報數,數到m的人出列,下乙個人又從k開始報數,到m出列,直至全出列。步驟 1.建立乙個有n個鏈節點無頭節點的迴圈鍊錶 2.確定第乙個報數人位置 3.不斷從鏈中刪除節點至鍊錶為空 n為總人數,k為第乙個報數人,m為出列者喊的數 linklist p,...

C資料結構迴圈鍊錶實現約瑟夫環

c資料結構迴圈鍊錶實現約瑟夫環 本文 均在turbo c 2.0 的環境下執行通過,並得到正確結果,本程式為用迴圈鍊錶實現約瑟夫環,即有m個人站成乙個圓環,從某人 佇列第乙個 開程式設計客棧始報數,約定從某數開始的第n個人出列,他的下乙個再從一開始報,然再乙個報道n的人出列,本程式結果為人員出列順序...

資料結構 迴圈鍊錶求解約瑟夫環問題

開啟部落格,竟然有兩個多月沒更新部落格了。最近一直在忙著準備實習招聘,所以沒有學習什麼android的新的東西,而是在學習招聘中最被重視之一的資料結構與演算法,而自己又非科班出身,哎.也許沒那麼難,加油!另外,對於這個部落格,我是想專門寫一些安卓的知識方便自己回顧還有比我新手的來參考的,就像我收藏的...