上機指導 第2章

2023-01-06 08:42:05 字數 2117 閱讀 4493

實習指導

[實習題目]:

約瑟夫環問題。

[實習內容]:

首先,建立乙個單向迴圈鍊錶,並實現列印、查詢、刪除等操作,在此基礎上,實現約瑟夫環問題。

約瑟夫問題的一種描述是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼(正整數)。一開始任選乙個整數作為報數上限值m,從第乙個人開始順時針自1開始順序報數,報到m時停止報數。

報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有的人全部出列為止。

試設計乙個程式,按照出列順序列印出各人的編號。要求利用單向迴圈鍊錶作為儲存結構。

[實習目的]:

通過實現單向迴圈鍊錶的建立、查詢、刪除等操作,熟悉迴圈鍊錶結構的基本特點,掌握利用鍊錶結構解決具體問題的方法。

[實習步驟]:

1. 建立乙個長度為10的單向迴圈鍊錶(暫不實現刪除操作)

● 基本思路

首先呼叫建立操作,讀入 10 個正整數,建立乙個不帶頭結點的迴圈單鏈表,尾指標指向尾結點。然後呼叫列印操作,將建好的單向迴圈鍊錶列印輸出。結點的資料域是乙個整型量。

● 基本框架

#include <>

#include <>

typedef int elemtype;

typedef struct clnode

void prn_clinklist ( clinklist tail )

/* 列印單向迴圈鍊錶的子函式 */

void main(void)

注意:程式中名稱的大小寫前後要一致。

● 要點提示

建表操作的基本過程如下:

clinklist crt_clinklist (void)

/* 建立乙個不帶頭結點的、採用尾指標的單向迴圈鍊錶 */

else

讀入下乙個數x;

}if ( tail != null ) tail->next=head;

return (tail);

}● 測試資料

10個任意正整數:(19,14,23,01,68,20,84,27,55,11)

2. 建立乙個長度為10的單向迴圈鍊錶,並實現刪除操作

● 基本思路

在前面已經實現的單向迴圈鍊錶的基礎上,增加刪除第i個元素的操作。

● 基本框架

在前面程式框架的基礎上,增加刪除操作的函式定義,即增加如下函式的定義:

clinklist del_clinklist(clinklist tail, int i)

注意還要加上相應的函式原形說明和函式呼叫語句。

● 要點提示

clinklist del_clinklist(clinklist tail, int i)

主程式的基本過程如下:

void main(void)

● 測試資料

10個任意正整數:(19,14,23,01,68,20,84,27,55,11)

待刪結點的序號i=5

刪除i號結點後的表:(19,14,23,01,20,84,27,55,11)

3. 用單向迴圈鍊錶實現約瑟夫環問題

● 基本思路

在前面程式的基礎上,實現約瑟夫環問題:

(1)修改結點結構的定義,設定兩個資料域:序號域和密碼域。

(2)參考刪除操作,定義乙個函式:void game(clinklist tail, int first_number),按遊戲規則反覆執行刪除操作,並列印刪除結點的序號,直到表空為止。

(3)根據結點結構的變化,相應修改其它函式。

● 基本框架

(同上)

● 要點提示

主程式的基本過程如下:

void main(void)

● 測試資料

初始密碼m=20;

遊戲人數n=7;

7個人的密碼依次是:3,1,7,2,4,8,4;

則出列的順序為:6,1,4,7,2,3,5。

[改進建議]:

1. 改寫主程式,實現迴圈顯示選單、讀入選單選項、處理選單命令。

2. 用指標引數返回建立好的單向迴圈鍊錶。

3. 分別實現連續執行和分步執行方式,每一步都給出剩餘的人、已經出列的人、下一次報數的起始人等資訊。

5教學指南及上機指導第5章

第5章表單設計 一 教學提要 1 掌握使用表單嚮導建立表單的方法 2 掌握使用表單設計器建立表單的方法 3 掌握表單控制項的方法 二 課程內容 1 表單是由乙個或多個頁面組成的,類似於標準視窗的介面。表單除了能夠接收 顯示和編輯資料外,還有其他介面所沒有的功能。例如,在表單中可以新增很多物件,這些物...

第2章WindowsXP實驗指導

第2章 windows xp作業系統實驗指導 實驗一 window xp 的基本操作及硬體基本資訊檢視 一 實驗目的及任務要求 掌握 windows xp 的啟動與關閉方法 掌握滑鼠的基本操作 了解 windows xp 桌面的構成和簡單調整 掌握視窗的基本組成和基本操作 觀察計算機主要硬體的基本資...

第6章上機實訓

6 建立mdi窗體,並對子窗體進行管理 1 實訓目的 熟練掌握mdi窗體的程式設計和使用,能設計美觀實用的主窗全和子窗體,較熟練的動態增加和關閉子窗體。2 實訓要求 設計mdi窗體程式,使窗體完成mdi方面的應用。3 實訓示例 設計mdi主窗體和子窗體,能在主窗體中呼叫和增加子窗體,實現子窗體選單合...