數據結構課程設計_第1頁
數據結構課程設計_第2頁
數據結構課程設計_第3頁
數據結構課程設計_第4頁
數據結構課程設計_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

n0.0YN12再輸入多項Y再輸入多項式輸入n依次輸入調用加法輸出相加結果N1LaLb相加,建立多項式La+Lb,輸出相加的多項式——LaLb相減,建立多項式La-Lb2Lnode {Lnode}voidChaLNode(Lnode*L,Elemtype {Lnode*s,*p;}voidInvert(Lnode {Lnode*p,*q,*r;q->next=p;p= if(a->expn<b-{p=p //La的指數小于多項式LbPif(a->expn>b- LaLb的指數,q {a=p->data.expn;b=q->data.expn; //p //sum00{p->doef=sum;B=q;pre=p;p=p->next;->next; 如果sum為0即系數為0,則刪除該節(jié)點 =q->next;free(B);}}{pre->next=q;pre=pre-->next; //如果q中還有剩余那么把q中剩余的到pre->nextvoidPrint(Lnode {LNode*p;{printf("(%fx^%d)+",p->doef,p->data.expn);p=p->next;} oef,p->data.expnvoidInvert(Lnode {LNode*p,*q,*r;p=q;q=r;}void{LNode*La,*Lb;ElemTypec;inta,i,k;for(;1;){La=InitList();Lb=InitList();();case1:printf("\n\n\n輸入多項式一的項數:");printf("a{printf("輸入多項式一第%d項系數和指數:",i+1);printf("a{printf("輸入多項式二第%d項系數和指數:",i+1);printf("printf("多項式二為:Print(Lb);printf("\n");Invert(La);Print(La);printf("\n");break;caseprintf("\n\n\n輸入多項式一的項數:");printf("a{printf("輸入多項式一第%d項系數和指數:",i+1);printf("a {printf("輸入多項式二第%d項系數和指數:",i+1);printf("多項式二為:Print(Lb);printf("\n");case0:break;}1.LNode//2.鏈表模voidChaLNode(LNode*L,ElemType3.voidPrint(LNode4.voidInvert(LNode5.LNode*AddPolyn(LNode*A,LNode6.voidduoxiangshi(//調用模7.菜單模 用戶級接口:菜單模塊中對于程序的輸入輸出,在函數duoxiangshi()功能中即可實現。利用菜單函數,用戶按鍵case1printf("\n\n\n輸入多項式一的項數:");printf("a{printf("輸入多項式一第%d項系數和指數:",i+1);2對的使用說0直接退出。要求實現對學生資料的錄入、瀏覽、和刪除等功能3typedefstructnode{intenglish;intgaoshu;intintshujujiegou;structnode*next;voidCreatLinkList()voidInsertStu() DeleStu()voidDisplayStu() student()s-s-2voidCreatLinkList(LinkList*head,int {charintscore1,score2,score3,score4;inti=1;LinkListLinkListprintf("請輸入你的學號:(0結束)");{s=(LinkList*)malloc(sizeof(LinkList));strcpy(s->num,num);s-s-s-printf("0結束輸入:\n");voidInsertStu(LinkList*head,charnum[],int {LinkListLinkListintscore1,score2,score3,score4;intflag=0;{{}{s=(LinkList*)malloc(sizeof(LinkList));s-s-s-intDeleStu(LinkList*head,charnum[],int {LinkListLinkList{printf("學生表中沒有任何的學生\n");returnERROR;}{{{{p->next=s-}\n");returnERROR;}}voidDisplayStu(LinkList {LinkList*h=head-printf("學號英語高數數據結構\n");{int {LinkList*head;charnum[110];intflag=0;inthead=(LinkList*)malloc(sizeof(LinkList));if(head->next!=NULL)printf("要的學生學號,以0結束\n");{}printf("0結束\n");{}return5學生信息模塊,通過單鏈表結點學生信intstudent()實現,用戶根據提示輸出學號、各門成績printf("要的學生學號,以0結束\n");scanf}printf("0結束\n");{}return110(2)學號為111的學生后的信1100在此模塊中,我準備從以下方面進行改進增加用戶菜單函數,使得整個界面更加人性化,便于用戶與的互動對的使用說0直接退出。typedefinemType;typedefstruct{intlength;typedefstruct{兩個順序表合并操兩個單鏈表合并操voidCreaist( //創(chuàng)建順序voidCreaistR( //創(chuàng)建單鏈voidcombine1( //voidcombine2( //voidDispList //void //voidinput1( //voidinput2( //voidcombine //12void ist(SqList*&L,ElemTypea[],int //{intL=(SqList*)malloc(sizeof(SqList));}void istR(Linklist*&L,ElemTypea[],int {Linklist*s,*r;intL=(Linklist*)malloc(sizeof(Linklist));for{s=(Linklist*)malloc(sizeof(Linklist));}voidcombine1(SqList*LA,SqList*LB,SqList {intLC=(SqList*)malloc(sizeof(SqList));while(i<LA->length&&j<LB-{{}{{{{}}voidcombine2(Linklist*L1,Linklist*L2,Linklist* {Linklist*pa=L1->next,*pb=L2->next,*pc,*s;L3=(Linklist*)malloc(sizeof(Linklist));while(pa!=NULL&&{{s=(Linklist*)malloc(sizeof(Linklist));}{s=(Linklist*)malloc(sizeof(Linklist));{s=(Linklist*)malloc(sizeof(Linklist));{s=(Linklist{s=(Linklist*)malloc(sizeof(Linklist));}voidDispList(SqList {int printf("%d",L->data[i]);voidDispListR(Linklist {Linklist*p=L->next;{printf("%d",p->data);}voidinput1(SqList {inta[maxsize];intn;printf("\t順序表數據個數:");printf("\t請按照遞增順序輸入數據:");for(inti=0;i<n;i++)printf("\t您輸入的順序表數據為:"); voidinput2(Linklist {inta[maxsize];intn;printf("\t單鏈表數據個數:");printf("\t請按照遞增順序輸入數據:");for(inti=0;i<n;i++) printf("\t您輸入的單鏈表數據為:");}void {SqList*LA,*LB,*LC;Linklist*L1,*L2,*L3;intch;intflag=1; tobeornottobe! printf("\t請選擇:");{case1: printf("\tLa:\ninput1(LA);printf("\tLb:\n");input1(LB);printf("\tLC:");DispList(LC);free(LC);case2:printf("\tL1:\ninput2(L1);printf("\tL2:\n");input2(L2);printf("\tL3:"); case0:flag=0;??!\n\n"); }此分為4個程序模塊程序員級接口:voidinput1(SqList*&L)voidinput2(Linklist*&L)兩種voidDispList(SqList*L)、voidDispListR(Linklist*L)合并后的數據voidcombine()函數調用模塊,達到任務要求的功能。LaLbLaLb0對于此改進方向:表中對于有序表順序排列還有些瑕疵,在后續(xù)改進中我會側重這個方面的改進。對的使用說0直接退出。任務:實現十進制數N算法執(zhí)行后,給出相對應的進制數數值,對于輸入數據的可以不做檢查。typedefstruct{int*base;intintvoidInitStack voidPush( voidPop voidtentotwo inttwototen( 1 swap 2取余,12voidInitStack(SqStack //{S1.base=(int*)malloc(100*sizeof(int));voidPush(SqStack&S2,int {voidPop(SqStack&S3,int //{e=*--voidtentotwo(intn){ n=n/2; inte;cout<<e;}int {charintsum1=0,count=1,num;doublesum2=0,a,i; {{}else{}else{} {{}printf("\n該二進制數對應的十進制數是:%d\n",sum1);printf("\n該二進制數對應的十進制數是:%f\n\n",sum1+sum2);} }int //intm,k;chara;case1:{printf("\t\t十-二進制轉換\t\t\n");printf("\n請輸入一個十進制數:");caseprintf("\t\t二-\t\t\n");case return}3用戶級接口:即用戶菜單欄,可以實現用戶與的互動對于程序輸入輸出,主要依靠函數調用模塊intswap()來實現輸入輸出功能,程序case1:{printf("\t\t十-二進制轉換\t\t\n");printf("\n請輸入一個十進制數:");caseprintf("\t\t二-\t\t\n");case return}1211003對的使用說3三、結論與體更深了一層,也更加明白了算法和結構的的重要性。在準備設計之前我去館的考慮用戶的靈活性于是又進行了第二次修改在修改過程中可謂是重重,,式就像在網上打開一個小程序時的樣子有實際應用價值并且加上用戶登陸界面就是的學號我在館查了資料也在網上搜了s的頓時做起來更難了時間很緊迫但是自己卻做的一沓糊涂無奈我又換了式放了對窗體實現以及界面美化功能這是我最大的遺憾但是我一有時間便會繼續(xù)去做這個設計把它做的好一些,我一向做事較慢些,但我有耐心和毅力,我相信我會給自己一個交代的。課程設計是對實踐能力的一個檢驗和鍛煉也是是體現程序學的好壞與我覺得課程設計的是注重于你做的過程而不是結果注重你學到了什么如果你跟著大眾人云亦云的其他人的程序最后雖說交了報告,了自己能力明顯不足,作為一個計算機專業(yè)的學生我覺得應該好好掌握編程知識,有強大的編程能力,這樣才對得起自己所學的專業(yè)。,附錄1:參考文《數據結構(第3版,,《數據結構(C語言版),吳偉民,《DataStructuresUsingC(C語言版RKrishnamoorthyGIndiraniKumaravel,,2009-9《C++數據結構與程序設計(美)RobertL.Kruse/AlexanderJ.Ryba著/譯,《計算機算法設計與分析(第2版,,電子工業(yè),附錄2:部分源代碼#defineTRUE1#defineFALSE#define #defineERROR-#defineINFEASIBLE-#definemaxsizetypedef{floatcoef;intexpn;typedefstruct{Elemtypedata;structLnode*next;void(){printf(""Lnode*InitList()//創(chuàng)建鏈表{Lnode*L;voidChaLNode(Lnode*L,Elemtype {Lnode*s,*p;Lnode*AddPolyn(Lnode*A,Lnode*B)//{Lnode*p,*q,*temp,*pre;floatsum;inta,b;{{ p=p-}->next;}}if(q) voidInvert(Lnode*L)//{Lnode*p,*q,*r;voidPrint(Lnode*L)//{Lnode*p;{ voidduoxiangshi(){Lnode*La,*Lb;Elemtypec;inta,i,k;Lb=InitList();();case1:printf("\n\n\n輸入多項式一的項數:");printf("a{printf("輸入多項式一第%d項系數和指數:",i+1);printf("a{printf("輸入多項式二第%d項系數和指數:",i+1);}case2:printf("\n\n\n輸入多項式一的項數:");printf("a{printf("輸入多項式一第%d項系數和指數:",i+1);printf("a{printf("輸入多項式二第%d項系數和指數:",i+1);case0:break;}typedefstruct{charnum[110];intenglish;intgaoshu;intintshujujiegou;structnode*next;voidCreatLinkList(LinkList*head,int{charintscore1,score2,score3,score4;inti=1;LinkListLinkList{{printf("請輸入你的學號:(0結束)");{s=(LinkList*)malloc(sizeof(LinkList));strcpy(s->num,num);s-printf("0結束輸入:\n");voidInsertStu(LinkList*head,charnum[],intLinkListLinkListintscore1,score2,score3,score4;intflag=0;{{{}s=(LinkList*)malloc(sizeof(LinkList));s-s-}intDeleStu(LinkList*head,charnum[],int{LinkListLinkList{printf("學生表中沒有任何的學生\n");returnERROR;}{{{p=p-\n");returnERROR;}}voidDisplayStu(LinkList{LinkList*h=head-printf("學號英語高數數據結構\n");{int{LinkList*head;charnum[110];intflag=0;inthead=(LinkList*)malloc(sizeof(LinkList));if(head->next!=NULL)printf("要的學生學號,以0結束\n");{printf("0結束\n");{}returntypedefinemType;typedefstruct{inttypedefstruct{ElemTypedata;structLNode*next;void ist(SqList*&L,ElemTypea[],int{intL=(SqList*)malloc(sizeof(SqList));voidCreaistR(Linklist*&L,ElemTypea[],int{Linklist*s,*r;intL=(Linklist*)malloc(sizeof(Linklist));for{s=(Linklist*)malloc(sizeof(Linklist));voidcombine1(SqList*LA,SqList*LB,SqList{intLC=(SqList*)malloc(sizeof(SqList));while(i<LA->length&&j<LB-{{{{{{}voidcombine2(Linklist*L1,Linklist*L2,Linklist*{Linklist*pa=L1->next,*pb=L2->next,*pc,*s;L3=(Linklist*)malloc(sizeof(Linklist));while(pa!=NULL&&{{s=(Linklist*)malloc(sizeof(Linklist));}{s=(Linklist*)malloc(sizeof(Linklist));{s=(Linklist*)malloc(sizeof(Linklist));{s=(Linklist*)malloc(sizeof(Linklist));{s=(Linklist*)malloc(sizeof(Linklist));}pc-voidDispList(SqList{int printf("%d",L->data[i]);voidDispListR(Linklist{Linklist*p=L->next;{printf("%d",p-p=p->next;}printf("\n\n\n");}voidinput1(SqList*&L){inta[maxsize];intn;printf("\t順序表數據個數printf("\t請按照遞增順序輸入數據:");for(inti=0;i<n;i++) }voidinput2(Linklist{inta[maxsize];intn;printf("\t單鏈表數據個數printf("\t請按照遞增順序輸入數據:");for(inti=0;i<n;i++)CreaDispList

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論