題目:約瑟夫環
班級:030914班
姓名:吳多堅
學號:03091443
完成日期:2010-5-12
一、需求分析
(1)建立鍊錶的型別;
根據題意,操作物件是圍成一圈的同學,數數時以一圈為迴圈,因此建立的鍊錶為迴圈鍊錶最為合適。
(2)每個結點所應包含的元素;
因為每位同學的座位都有對應固定的易個座位號和乙個密碼,所以結點中賦予兩個個整型型別的變數作為座位號和密碼。
(3)開始計數的起點;
最為重要的是第一次計數時位置的確定,雖然第一次的第一位同學是1號同學,但在鍊錶中為了方便,要做刪除操作時指標應指向被刪除結點的前一位,所以程式開始的頭指標應該是尾結點。而且每一次刪除結點後指標所停留的位置都在下一次開始計數的前一位,所以後面的指標位置不需要更動。
(4)程式功能
按照給定密碼將圍成圈的同學分別找出。
(5)測試資料
見測試結果
二、概要設計
抽象資料型別的定義
typedef struct lnode
分別給每個結點賦值(座位號、密碼)
for(i=1;i<=n;i++)
得到尾結點
l=q;
輸出for( i=1;i<=n;i++)
四、除錯分析
(1)除錯過程中遇到的問題及其解決方法
a.問題:在申請頭結點成功只賦值給head指標,所以當指標到達尾結點後指不回頭結點。
解決方法:申請頭結點成功後把head再賦值給q儲存,為「頭尾相接」作鋪墊。
b.問題:最後輸出的結點有錯。
解決方法:如下:
(2)經驗與體會
我發現我這次所程式設計的錯誤點都出現在細小的地方,乙個字母,乙個賦值變數。而且這樣的程式錯誤特別難排除。我用了不到半個小時編出來的程式卻花了我幾個小時來bugging,當我最後才發現我出錯的地方後很抓狂,難以接受這樣的錯誤。
但後來我想了一下,這種錯誤的原因歸於平常的不仔細,歸於急於求成的結果。所以我想我會在在後面的程式設計中刻意注意這點,也希望這種錯誤能減少發生的可能。
五、使用者使用說明
a、輸入初始密碼m;
b、輸入人數n;
c、分別輸入各同學所持有的密碼;
d、程式結果輸出。
六、測試結果
七、附錄
帶有注釋的源程式(見源程式檔案)
資料結構約瑟夫環的課程設計報告
武漢工業學院 數學與計算機學院 資料結構課程設計 設計題目 約瑟夫環 專業大類計算機 班級計算機6班 學號 100702129 姓名王元 指導教師李禹生 2011年 9月 3 日 題目 約瑟夫環 問題描述 編號為1,2,n的n個人按順時針方向圍坐圈,每個人持有乙個密碼 正整數 一開始任選乙個正整數作...
資料結構上機報告 迷宮
迷宮求解 小組成員 1 問題提出 利用棧結構實現迷宮求解問題。迷宮求解問題如下 心理學家把乙隻老鼠從乙個無頂蓋的大盒子的入口趕進迷宮,迷宮中設定很多隔壁,對前進方向形成了多處障礙,心理學家在迷宮的唯一出口放置了一塊乳酪,吸引老鼠在迷宮中尋找通路以到達出口,測試演算法的迷宮如下圖所示 2 問題分析及演...
資料結構上機實習報告
班號 116112 姓名 李旭 學號 20111003534 實習報告 實習一 線性表及其應用 n n 20 的階乘 問題描述 大數運算 計算n的階乘 n 20 基本要求 1 資料的表示和儲存 1.1 累積運算的中間結果和最終的計算結果的資料型別要求是整型 這是問題本身的要求 1.2 試設計合適的儲...