




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)用文案(一)基本問題問題描述設(shè)有編號(hào)為 1,2,?,n的n(n>0)個(gè)人圍成一個(gè)圈,每個(gè)人持有一個(gè)密碼 m。從第一個(gè)人開始報(bào)數(shù),報(bào)到 m時(shí)停止報(bào)數(shù),報(bào) m的人出圈,再?gòu)乃南乱粋€(gè)人起重新報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào) m的出圈,??,如此下去,直到所有人全部出圈為止。當(dāng)任意給定 n和m后,設(shè)計(jì)算法求 n個(gè)人出圈的次序。建立模型,確定存儲(chǔ)結(jié)構(gòu)。對(duì)任意 n個(gè)人,密碼為m,實(shí)現(xiàn)約瑟夫環(huán)問題。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)首先,設(shè)計(jì)實(shí)現(xiàn)約瑟夫環(huán)問題的存儲(chǔ)結(jié)構(gòu)。 由于約瑟夫環(huán)問題本身具有循環(huán)性質(zhì), 考慮采用循環(huán)鏈表,為了統(tǒng)一對(duì)表中任意結(jié)點(diǎn)的操作, 循環(huán)鏈表不帶頭結(jié)點(diǎn)。 將循環(huán)鏈表的結(jié)點(diǎn)定義為如下結(jié)構(gòu)類型:structNode{intdata;Node*next;};其次,建立一個(gè)不帶頭結(jié)點(diǎn)的循環(huán)鏈表并由頭指針 first 指示算法設(shè)計(jì)標(biāo)準(zhǔn)文檔實(shí)用文案1、工作指針 first,r,s,p,q初始化2、輸入人數(shù)(n)和報(bào)數(shù)(m)3、循環(huán)n次,用尾插法創(chuàng)建鏈表Node*q;for(inti=1;i<=n;i++){Node*p;p=newNode;p->data=i;p->next=NULL;if(i==1)L=q=p;else{q->next=p;q=q->next;}}標(biāo)準(zhǔn)文檔實(shí)用文案q->next=L;if(L!=NULL){return(L);}4、輸入報(bào)數(shù)的起始人號(hào)數(shù) k;5、Node*q=newNode; 計(jì)數(shù)器初始化 i=1;6、循環(huán)n次刪除結(jié)點(diǎn)并報(bào)出位置(其中第一個(gè)人后移 k個(gè))當(dāng)i<n 時(shí)移動(dòng)指針 m-2次p=p->next;刪除p結(jié)點(diǎn)的后一結(jié)點(diǎn) qq=p->next;p->next=q->next;*L=p->next;報(bào)出位置后 Deleteq;計(jì)數(shù)器i++;運(yùn)行流程圖標(biāo)準(zhǔn)文檔實(shí)用文案開始輸入m和n創(chuàng)建鏈表Yk>n-1N移動(dòng)指針p刪除p后一結(jié)點(diǎn)q指針p后移,k++輸出n結(jié)束代碼和相關(guān)解釋#include<iostream>usingnamespacestd;structNode// 循環(huán)節(jié)點(diǎn)的定義{intdata;// 編號(hào)Node*next;標(biāo)準(zhǔn)文檔實(shí)用文案};Node*CreateList(Node*L,int&n,int&m);// 建立約瑟夫環(huán)函數(shù)voidJoseph(Node*L,intn,intm);// 輸出每次出列號(hào)數(shù)函數(shù)Node*DeleteList(Node**L,inti,Node*q);// 尋找每次出列人的號(hào)數(shù)intLengthList(Node*L);// 計(jì)算環(huán)上所有人數(shù)函數(shù)voidmain()// 主函數(shù)在主函數(shù)中,完成人數(shù)(n)和報(bào)數(shù)(m)的輸入和工作指針的初始化{Node*L;L=NULL;// 初始化尾指針intn,m;cout<<" 請(qǐng)輸入人數(shù) N:";cin>>n;// 環(huán)的長(zhǎng)度if(n<1){cout<<" 請(qǐng)輸入正整數(shù)!";}//人數(shù)異常處理else{cout<<" 請(qǐng)輸入所報(bào)數(shù) M:";cin>>m;標(biāo)準(zhǔn)文檔實(shí)用文案if(m<1){cout<<" 請(qǐng)輸入正整數(shù)!";}//號(hào)數(shù)異常處理else{L=CreateList(L,n,m);// 重新給尾指針賦值Joseph(L,n,m);}}system("pause");}Node*CreateList(Node*L,int&n,int&m)// 建立一個(gè)約瑟夫環(huán)(尾插法){Node*q;for(inti=1;i<=n;i++){Node*p;p=newNode;p->data=i;p->next=NULL;標(biāo)準(zhǔn)文檔實(shí)用文案if(i==1)L=q=p;// 工作指針的初始化else{q->next=p;q=q->next;}}q->next=L;if(L!=NULL){return(L);}// 返回尾指針elsecout<<" 尾指針異常!"<<endl;// 尾指針異常處理}voidJoseph(Node*L,intn,intm)// 輸出每次出列的人{(lán)intk;cout<<" 請(qǐng)輸入第一個(gè)報(bào)數(shù)人: ";cin>>k;if(k<1||k>n){cout<<" 請(qǐng)輸入1-"<<n<<" 之間的數(shù)"<<endl;}標(biāo)準(zhǔn)文檔實(shí)用文案else{cout<<"\n 出列順序:\n";for(inti=1;i<n;i++){Node*q=newNode;if(i==1)q=DeleteList(&L,k+m-1,q);// 第一個(gè)出列人的號(hào)數(shù)elseq=DeleteList(&L,m,q);cout<<" 號(hào)數(shù):"<<q->data<<endl;deleteq;// 釋放出列人的存儲(chǔ)空間}cout<<" 最后一個(gè)出列號(hào)數(shù)是: "<<L->data<<endl;;// 輸出最后出列人的號(hào)數(shù)}}Node*DeleteList(Node**L,inti,Node*q)// 尋找每次出列的人{(lán)標(biāo)準(zhǔn)文檔實(shí)用文案if(i==1)i+=LengthList(*L);// 順序依次出列情況的處理方式Node*p;p=*L;intj=0;while(j<i-2){p=p->next;j++;}q=p->next;p->next=p->next->next;*L=p->next;return(q);}intLengthList(Node*L)// 計(jì)算環(huán)上的人數(shù){if(L){cout<<" 尾指針錯(cuò)誤!"<<endl;}// 異常處理else{inti=1;Node*p=L->next;標(biāo)準(zhǔn)文檔實(shí)用文案while(p!=L){i++;p=p->next;}return(i);}}復(fù)雜度分析:for(inti=1;i<=n;i++){Node*p;p=newNode;p->number=i;p->next=NULL;if(i==1)L=q=p;else{q->next=p;q=q->next;標(biāo)準(zhǔn)文檔實(shí)用文案}時(shí)間復(fù)雜度:O(n)if(i==1)i+=LengthList(*L);Node*p;p=*L;intj=0;while(j<i-2){p=p->next;j++;}q=p->next;p->next=p->next->next;*L=p->next;return(q);時(shí)間復(fù)雜度:O(n2)算法的空間復(fù)雜度: O(n2)界面設(shè)計(jì)請(qǐng)輸入報(bào)數(shù)人數(shù) n請(qǐng)輸入所報(bào)數(shù) M請(qǐng)輸入第一個(gè)報(bào)數(shù)人——以下列出依次報(bào)數(shù)的結(jié)果標(biāo)準(zhǔn)文檔實(shí)用文案運(yùn)行、測(cè)試與分析(二)采用順序存儲(chǔ)結(jié)構(gòu)如何實(shí)現(xiàn)約瑟夫環(huán)問題代碼和解釋#include<stdlib.h>#include<stdio.h>#include<malloc.h>#defineMaxSize50typedefcharElemType;標(biāo)準(zhǔn)文檔實(shí)用文案typedefstructSeqlist{//線性表順序存儲(chǔ)結(jié)構(gòu)定義ElemType*elem[MaxSize];// 存放順序表數(shù)據(jù)元素intlength;// 當(dāng)前長(zhǎng)度}*JSeqlist;// 線性表存儲(chǔ)結(jié)構(gòu)類型名JSeqlistInt_SeqList(void){//順序表初始化JSeqlistL;L=(JSeqlist)malloc(sizeof(structSeqlist));if(L!=NULL)L->length=0;elseprintf(" 超出范圍!!");returnL;}ElemType*Locate_SeqList(JSeqlistL,intp){//查找線性表中下標(biāo)為 P的元素if(p>=0&&L->length)return(L->elem[p]);else{printf(" 順序表中不存在相關(guān)元素 ");returnNULL;標(biāo)準(zhǔn)文檔實(shí)用文案}}intInsert_SeqList(JSeqlistL,inti,ElemType*x){//在順序表中指定元素前插入 Xintj;if(L->length==MaxSize)//L.length 是最后一個(gè)元素的位置{printf(" 線性表已滿,無(wú)法進(jìn)行插入操作! ?。?!\n");return0;}if(i<0||i>L->length){printf(" 插入位置不對(duì),超出順序表長(zhǎng)度 \n");return0;}if(i==0){L->elem[i]=x;L->length=L->length+1;return1;}for(j=L->length;j>=i;j--){L->elem[ j]=x;}L->length++;return1;標(biāo)準(zhǔn)文檔實(shí)用文案}intDelete_JSeqlist(JSeqlistL,inti){//在順序表中刪除第 i個(gè)元素intj;if(i<0||i>L->length-1){printf(" 刪除位置不對(duì),超出順序表的長(zhǎng)度啦 \n");return0;}for(j=i;j<L->length-1;j++)L->elem[j]=L->elem[j+1];L->length--;return1;}voidjosephus(JSeqlistL,intstart,intm){//josephus 問題求解的非常牛逼的函數(shù)ints,i;ElemType*w;s=start-1;for(i=L->length;i>0;i--){標(biāo)準(zhǔn)文檔實(shí)用文案s=(s+m-1)%i;w=Locate_SeqList(L,s);printf(" 出列人員為: %s\n",w);Delete_JSeqlist(L,s);}}intmain(void){JSeqlistJosephus;intn,m,i,k,s;Josephus=Int_SeqList();// 順序表初始化printf(" 約瑟夫環(huán)問題順序表求解 _愚人節(jié)特別版 \n\n");printf(" 請(qǐng)輸入本問題中總?cè)藬?shù) m=");scanf("%d",&n);printf(" 請(qǐng)輸入本問題開始人員的位置 S=");scanf("%d",&s);printf(" 請(qǐng)輸入本問題的計(jì)數(shù)值 m=");scanf("%d",&m);printf(" 請(qǐng)輸入本問題中這些人的名字 \n");for(i=0;i<n;i++){printf(" 第%d位置的人員的名字為 :",(i+1));標(biāo)準(zhǔn)文檔實(shí)用文案Josephus->elem[i]=(ElemType*)calloc(10,sizeof(char));scanf("%s",Josephus->elem[i]);k=Insert_SeqList(Josephus,i,Josephus->elem[i]);if(k==0)exit(1);}josephus(Josephus,s,m);free(Josephus);getchar();return0;}運(yùn)行結(jié)果標(biāo)準(zhǔn)文檔實(shí)用文案(三)密碼不同#include<iostream.h>structCList{intpassword;intnumber;structCList*next;};typedefstructCListCNode;typedefCNode*CLink;CLinkCreateList(intlength){CLinkhead;CLinkbefore;CLinknew_node;inti;head=newCNode;if(head==NULL)returnNULL;cout<<"PleaseInputPassword1:"<<endl;cin>>head->password;head->number=1;標(biāo)準(zhǔn)文檔實(shí)用文案head->next=NULL;before=head;for(i=1;i<length;i++){new_node=newCNode;if(new_node==NULL)returnNULL;new_node->number=i+1;cout<<"PleaseInputPassword"<<new_node->number<<":"<<endl;cin>>new_node->password;new_node->next=NULL;before->next=new_node;before=new_node;}new_node->next=head;returnhead;}intmain(){標(biāo)準(zhǔn)文檔實(shí)用文案CLinkhead;CLinkptr,back,last;inti,j,m,n;cout<<"PleaseInputtheNumberofPersons:"<<endl;cin>>n;cout<<"Plea
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)定明確的工作優(yōu)先級(jí)計(jì)劃
- 財(cái)務(wù)分析在企業(yè)評(píng)估中的應(yīng)用計(jì)劃
- 教學(xué)創(chuàng)新與成果分享機(jī)制計(jì)劃
- 防止職業(yè)倦怠的小技巧計(jì)劃
- 醫(yī)學(xué)影像科醫(yī)生工作計(jì)劃
- 建立員工反饋與建議機(jī)制計(jì)劃
- 2025年電動(dòng)晾衣機(jī)項(xiàng)目合作計(jì)劃書
- 景區(qū)承包合同
- 珠寶定制服務(wù)特殊條款協(xié)議
- 農(nóng)產(chǎn)品電商項(xiàng)目開發(fā)合作框架協(xié)議
- 春節(jié)申遺成功的意義
- 子女放棄繼承房產(chǎn)協(xié)議書
- 施工方案與技術(shù)措施合理性、科學(xué)性與可行性
- 部編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)電子課文《小馬過河》
- 《醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則》專題解讀
- 愛車講堂 課件
- 成立商會(huì)的可行性報(bào)告5則范文
- 小學(xué)體育課件《立定跳遠(yuǎn)課件》課件
- 市場(chǎng)監(jiān)督管理局反電信網(wǎng)絡(luò)詐騙工作總結(jié)
- 2018中國(guó)技能?賽全國(guó)選拔賽“3D數(shù)字游戲藝術(shù)”項(xiàng)?技能樣題
- 2024-2030年中國(guó)免疫細(xì)胞存儲(chǔ)行業(yè)發(fā)展模式及投資戰(zhàn)略分析報(bào)告
評(píng)論
0/150
提交評(píng)論