設(shè)有二元函數(shù) f(x,y) = f(x) + f(y) 其中: f(x) = f(x-1) * x (x >1) f(x)=1 (x=1) f(y) = f(y-1) + f(y-2) (y> 2) f(y)=1 (y=1,2) 請編程建立 3 個(gè)并發(fā)協(xié)作進(jìn)程,它們分別完成 f(x,y)、f(x)、f(y)
標(biāo)簽: 二元 函數(shù)
上傳時(shí)間: 2017-04-21
上傳用戶:WWSAE
#include<stdio.h> #define TREEMAX 100 typedef struct BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); int TreeDepth(BT *T); int count=0; void main() { BT *T=NULL; char ch1,ch2,a; ch1='y'; while(ch1=='y'||ch1=='y') { printf("\n"); printf("\n\t\t 二叉樹子系統(tǒng)"); printf("\n\t\t*****************************************"); printf("\n\t\t 1---------建二叉樹 "); printf("\n\t\t 2---------先序遍歷 "); printf("\n\t\t 3---------中序遍歷 "); printf("\n\t\t 4---------后序遍歷 "); printf("\n\t\t 5---------求葉子數(shù) "); printf("\n\t\t 6---------求結(jié)點(diǎn)數(shù) "); printf("\n\t\t 7---------求樹深度 "); printf("\n\t\t 0---------返 回 "); printf("\n\t\t*****************************************"); printf("\n\t\t 請選擇菜單號 (0--7)"); scanf("%c",&ch2); getchar(); printf("\n"); switch(ch2) { case'1': printf("\n\t\t請按先序序列輸入二叉樹的結(jié)點(diǎn):\n"); printf("\n\t\t說明:輸入結(jié)點(diǎn)(‘0’代表后繼結(jié)點(diǎn)為空)后按回車。\n"); printf("\n\t\t請輸入根結(jié)點(diǎn):"); T=CreateTree(); printf("\n\t\t二叉樹成功建立!\n");break; case'2': printf("\n\t\t該二叉樹的先序遍歷序列為:"); Preorder(T);break; case'3': printf("\n\t\t該二叉樹的中序遍歷序列為:"); Inorder(T);break; case'4': printf("\n\t\t該二叉樹的后序遍歷序列為:"); Postorder(T);break; case'5': count=0;Leafnum(T); printf("\n\t\t該二叉樹有%d個(gè)葉子。\n",count);break; case'6': count=0;Nodenum(T); printf("\n\t\t該二叉樹總共有%d個(gè)結(jié)點(diǎn)。\n",count);break; case'7': printf("\n\t\t該樹的深度為:%d",TreeDepth(T)); break; case'0': ch1='n';break; default: printf("\n\t\t***請注意:輸入有誤!***"); } if(ch2!='0') { printf("\n\n\t\t按【Enter】鍵繼續(xù),按任意鍵返回主菜單!\n"); a=getchar(); if(a!='\xA') { getchar(); ch1='n'; } } } } BT *CreateTree() { BT *t; char x; scanf("%c",&x); getchar(); if(x=='0') t=NULL; else { t=new BT; t->data=x; printf("\n\t\t請輸入%c結(jié)點(diǎn)的左子結(jié)點(diǎn):",t->data); t->lchild=CreateTree(); printf("\n\t\t請輸入%c結(jié)點(diǎn)的右子結(jié)點(diǎn):",t->data); t->rchild=CreateTree(); } return t; } void Preorder(BT *T) { if(T) { printf("%3c",T->data); Preorder(T->lchild); Preorder(T->rchild); } } void Inorder(BT *T) { if(T) { Inorder(T->lchild); printf("%3c",T->data); Inorder(T->rchild); } } void Postorder(BT *T) { if(T) { Postorder(T->lchild); Postorder(T->rchild); printf("%3c",T->data); } } void Leafnum(BT *T) { if(T) { if(T->lchild==NULL&&T->rchild==NULL) count++; Leafnum(T->lchild); Leafnum(T->rchild); } } void Nodenum(BT *T) { if(T) { count++; Nodenum(T->lchild); Nodenum(T->rchild); } } int TreeDepth(BT *T) { int ldep,rdep; if(T==NULL) return 0; else { ldep=TreeDepth(T->lchild); rdep=TreeDepth(T->rchild); if(ldep>rdep) return ldep+1; else return rdep+1; } }
標(biāo)簽: 二叉樹 子系統(tǒng)
上傳時(shí)間: 2020-06-11
上傳用戶:ccccy
NNS-701 是專為移動(dòng)裝置設(shè)計(jì)的全功能NFC (Near Field Communication)控制器芯片。
標(biāo)簽: NFC 集成 方案
上傳時(shí)間: 2013-10-11
上傳用戶:蠢蠢66
用四階(定步長)龍格--庫塔法求解初值問題,其中一階微分方程未y =f(x,y)
標(biāo)簽: 初值
上傳時(shí)間: 2013-12-08
上傳用戶:zhengjian
用改進(jìn)的歐拉方法求解初值問題,其中一階微分方程未y =f(x,y)
上傳時(shí)間: 2013-12-17
上傳用戶:fnhhs
* 用改進(jìn)的歐拉方法求解初值問題,其中一階微分方程未y =f(x,y) * 初始條件為x=x[0]時(shí),y=y(tǒng)[0]. * 輸入: f--函數(shù)f(x,y)的指針 * x--自變量離散值數(shù)組(其中x[0]為初始條件) * y--對應(yīng)于自變量離散值的函數(shù)值數(shù)組(其中y[0]為初始條件) * h--計(jì)算步長 * n--步數(shù) * 輸出: x為說求解的自變量離散值數(shù)組 * y為所求解對應(yīng)于自變量離散值的函數(shù)值數(shù)組
上傳時(shí)間: 2015-07-26
上傳用戶:libinxny
輸入一系列遞減順序的整數(shù)(100,50,40,30……),以0標(biāo)志結(jié)束,將這些數(shù)作為data域逆序建立一個(gè)單鏈表;從鍵盤輸入一個(gè)整數(shù)X,將X插入到此單鏈表中并保持單鏈表data域的值遞增關(guān)系,輸出此時(shí)單鏈表各結(jié)點(diǎn)data域的值;從鍵盤輸入一個(gè)整數(shù)Y,若Y值在單鏈表中存在,則刪除data域的值為Y的結(jié)點(diǎn)(注單鏈表中沒有data域值相同的結(jié)點(diǎn)),并輸出此時(shí)單鏈表各結(jié)點(diǎn)data域的值。
標(biāo)簽: 100 50 40 30
上傳時(shí)間: 2013-12-20
上傳用戶:s363994250
本軟件是在VC++來編譯,在VC++的平臺(tái)下運(yùn)行,運(yùn)行界面是黑色屏幕,本軟件是實(shí)現(xiàn)最優(yōu)二叉查找樹結(jié)點(diǎn)的基本操作,在執(zhí)行結(jié)果的屏幕下首先輸入樹的結(jié)點(diǎn)值以-1作為輸入結(jié)束,然后選擇要進(jìn)行的操作,選擇一是顯示最優(yōu)二叉樹,選擇二是插入一個(gè)結(jié)點(diǎn),選擇三是查找一個(gè)結(jié)點(diǎn),選擇四是刪除一個(gè)結(jié)點(diǎn).在選擇各個(gè)操作后屏幕會(huì)提示要不要繼續(xù)進(jìn)行(Y/N),選擇Y是繼續(xù)操作,選擇N是退出操作.本軟件界面簡單,容易操作,提示語句都采用中文,簡單易懂.
標(biāo)簽: VC 軟件 屏幕 樹
上傳時(shí)間: 2013-12-28
上傳用戶:wang0123456789
在一個(gè)劃分成網(wǎng)格的操場上,n 個(gè)士兵散亂地站在網(wǎng)格點(diǎn)上。網(wǎng)格點(diǎn)由整數(shù)坐標(biāo)(x,y) 表示。士兵們可以沿網(wǎng)格邊上、下、左、右移動(dòng)一步,但在同一時(shí)刻任一網(wǎng)格點(diǎn)上只能有一名士兵。按照軍官的命令,士兵們要整齊地列成一個(gè)水平隊(duì)列,即排列成(x,y),(x+1,y),…,(x+n-1,y) 。如何選擇x 和y 的值才能使士兵們以最少的總移動(dòng)步數(shù)排成一列。
標(biāo)簽: 分 網(wǎng)格
上傳時(shí)間: 2014-01-04
上傳用戶:qq521
在一個(gè)劃分成網(wǎng)格的操場上,n個(gè)士兵散亂地站在網(wǎng)格點(diǎn)上。網(wǎng)格點(diǎn)由整數(shù)坐標(biāo)(x,y)表示。士兵們可以沿網(wǎng)格邊上、下、左、右移動(dòng)一步,但在同一時(shí)刻任一網(wǎng)格點(diǎn)上只能有一名士兵。按照軍官的命令,士兵們要整齊地列成一個(gè)水平隊(duì)列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何選擇x 和y的值才能使士兵們以最少的總移動(dòng)步數(shù)排成一列。 實(shí)驗(yàn)任務(wù):計(jì)算使所有士兵排成一行需要的最少移動(dòng)步數(shù)。
上傳時(shí)間: 2016-10-10
上傳用戶:leixinzhuo
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1