C 迴圈鍊錶之約瑟夫問題

2021-10-03 02:41:01 字數 1077 閱讀 2882

前天學了迴圈鍊錶,一直再沒管,今天來應用一下,感覺自己寫麻煩了…

迴圈鍊錶與單鏈表的區別就在於表尾指標不是null,而是等於first。這就產生了乙個好處就是可以從任何節點開始訪問到所有節點。

**

#includeusing namespace std;

struct people

;class josephus

~josephus() ;

void makeempty();

int run(int m);

void create();

void show();

};void josephus::show()

}void josephus::makeempty()

first = null;

}void josephus::create()

; people* p = first;

int i = 2;

while (i <= n)

; p->link = t;

p = p->link;

i++;

} p->link = first; //迴圈

}int josephus::run(int m)

p = p->link;

i++;

} first = p;

return first->data;

}int main()

後記

看了看資料結構樹上的思路,發現也很清晰,就是執行n-1趟(每次出乙個人,最後剩乙個人),每趟到m-1就出來刪除第m個。

int josephus::run(int m)

people* del = p->link;

p->link = del->link;

cout << del->data << endl;

delete del;

n--;

p = p->link;

} first = p;

return p->data;

}

忘記n–導致null問題。。。。

資料結構 迴圈鍊錶之約瑟夫問題

include include include using namespace std define elemtype string typedef struct lnode lnode,listq 迴圈鍊錶初始化 頭針指lq向最後乙個資料 bool initiallist listq lq ito...

資料結構之約瑟夫迴圈鍊錶

public class test public class joseph 如果不是首節點 node newnode newnode i,null 建立乙個新節點 pre.next newnode 為當前節點儲存下個節點 pre newnode 將新節點設為當前節點 if i total int c...

迴圈鍊錶 約瑟夫問題(C )

include using namespace std const maxsize 10 class node class josephus void josephus init else bool josephus empty void josephus insert elem n 1 datac...