華為上機測試 刪數 迴圈鍊錶解決

2021-08-05 21:47:30 字數 683 閱讀 6482

有乙個陣列a[n]順序存放0~n-1,要求每隔兩個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。以8個數(n=7)為例:{0,1,2,3,4,5,6,7},0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除),如此迴圈直到最後乙個數被刪除。

輸入描述:

每組資料為一行乙個整數n(小於等於1000),為數組成員數,如果大於1000,則對a[999]進行計算。

輸出描述:

一行輸出最後乙個被刪掉的數的原始下標位置。

輸入例子1:

8

輸出例子1: 6

**:

#include#includeusing namespace std;

typedef struct node* ptrtonext;

typedef ptrtonext list;

typedef ptrtonext position;

struct node ;

list createlist(int n)

p2->next = head;

return head;

}int main()

cout << p1->data;

while (1);

}

迴圈鍊錶解決約瑟夫迴圈問題

最近開始複習資料結構,今天手寫了乙個約瑟夫迴圈問題。首尾相連的鍊錶 head last tail tail next head 建立迴圈鍊錶和建立普通鍊錶方法差不多,只需要首尾相連即可 已知 n 個人 以編號1,2,3,n分別表示 圍坐在一張圓桌周圍,從編號為 k 的人開始順時針報數,數到 m 的那...

迴圈鍊錶解決約瑟夫 問題

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...

Josephus問題 用迴圈鍊錶解決

1.剛剛學鍊錶,因此這裡特地用迴圈鍊錶解決此問題。2.具體程式如下 joseph環問題 n個人排隊,以m報數,直到只剩1人,輸出此人編號 用迴圈鍊錶解決問題 include includeint n,m int i,k 建立結構體 struct student void main else p1 h...