實習指導
[實習題目]:
約瑟夫環問題。
[實習內容]:
首先,建立乙個單向迴圈鍊錶,並實現列印、查詢、刪除等操作,在此基礎上,實現約瑟夫環問題。
約瑟夫問題的一種描述是:編號為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主窗體和子窗體,能在主窗體中呼叫和增加子窗體,實現子窗體選單合...