一、實驗題目
猴子吃桃子問題
有一群猴子摘了一堆桃子,他們每天都吃當前桃子的一半且再多吃乙個,到了第10天就只
餘下乙個桃子。用多種方法實現求出原來這群猴子共摘了多少個桃子。
要求:
1)採用陣列資料結構實現上述求解
2)採用鏈資料結構實現上述求解
3)採用遞迴實現上述求解
二、實驗目的
採用陣列,鏈等資料結構實現
問題的求解
,練習陣列,鏈,
遞迴等方法求解問題
三、實驗要求
求出原來這群猴子共摘了多少個桃子
四、實驗步驟
基本設計思路:
(1)陣列:定義乙個一維陣列,分別儲存每天的桃子個數,根據題目的內容找出各
個數之間的關係,
用陣列元素表示出來,
計算出第一天總共
的桃子個數。
(2)鏈:建立乙個鍊錶,將每一天剩餘的桃子數儲存到鍊錶中最後依次輸出鍊錶所儲存的元素。
(3)遞迴:定義乙個遞迴函式,當遞迴函式中為1時遞迴函式返回桃子總數,否則桃子數變為題目中所給的關係。
演算法設計:
(1)陣列:定義乙個一維陣列peach[10],分別儲存每天的桃子個數
,peach[9]為第十天的桃子數,個數為1。根據題目的內容找出各
個數之間的關係
:peach=(1+peach)*2;進行迴圈直到天數day變為1,輸出第一天的桃子總數。
(2)鏈:peach為桃子個數,day為天數。建立乙個鍊錶head為頭結點,採用尾插法將桃子個數插入到鍊錶中,依次輸出鍊錶所儲存的元素。
(3)定義乙個遞迴函式f(),peach為桃子個數,day為天數。當遞迴函式中為1時遞迴函式返回桃子總數,否則桃子數變為題目中所給的關係即:peach=(1+peach)*2;
(1)陣列:int main()//實現函式運算與輸出;
(2)鏈:int main()//實現對其他函式的呼叫與輸出;
void insert()//實現鍊錶的建立
(3)遞迴:int main()//實現對其他函式的呼叫與輸出;
int f(int day,int peach)//實現遞迴呼叫
輸入與輸出:
無輸入輸出總桃子個數
程式執行結果
五、源程式清單(**)
(1)陣列
#include #includeusing namespace std;
int main()
printf("\n猴子共摘了%d個桃子\n",peach[0]);
return 0;
}(2)鏈
#include #include#includeusing namespace std;
typedef struct node
sqlist;
sqlist *head;
void insert()
p->next=null;
p=head;
head=head->next;
free(p);
}int main()
printf("\n猴子共摘了%d個桃子",sum);
return 0;
}(3)遞迴
#include #includeusing namespace std;
int f(int day,int peach)
else
}int main()
資料結構課程設計 迷宮問題課程設計報告
上學時沒學過資料結構和演算法,於是現在有機會就自學。下面是我最近在等待進入專案組期間,花了1小時學習了一下迷宮問題。下面是我學習時找到的一篇課程設計的報告,然後自己先看懂,然後又在vc6.0下執行了。迷宮問題 一 需求設計 以乙個m m 的方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式...
資料結構課程設計
資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...
資料結構課程設計
小明是乙個計算機專業top student 祝賀他畢業了。並準備到銀行參加工作。上班第一天,經理叫他編制乙個實現乙個活期儲蓄處理程式,算作考查。上班第一天,一定要給領導乙個好印象,小明二話沒說,就答應了。現要你是小明了,請完成如下題目功能。儲戶開戶 銷戶 存入 支出活動頻繁,系統設計要求 1 能比較...