版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
word文檔可自由復(fù)制編輯院系:計算機(jī)科學(xué)學(xué)院專業(yè):自動化年級:課程名稱:計算機(jī)軟件基礎(chǔ)學(xué)號:姓名:指導(dǎo)教師:年月日
年級班號
學(xué)號專業(yè)自動化
姓名實驗名稱順序表的基本操作
實驗類型設(shè)計型綜合型創(chuàng)新型√實驗?zāi)康幕蛞髮嶒災(zāi)康模?.理解線性表順序存儲結(jié)構(gòu)的存儲方式及其特點。 2.掌握對順序表存儲結(jié)構(gòu)的描述、基本操作的算法實現(xiàn)。3.掌握通過簡單實驗對C語言基礎(chǔ)知識進(jìn)行回顧;為后序的實驗做準(zhǔn)備。實驗要求:1.程序采用模塊化設(shè)計。(獨立的功能要用獨立的函數(shù)來實現(xiàn)。)2.建立相應(yīng)的功能菜單。(針對本程序的5個功能建立相應(yīng)的五個功能菜單選擇相應(yīng)的功能選項后進(jìn)入相應(yīng)的功能操作界面)3.每次實驗完成后我都會隨機(jī)挑選20%左右的同學(xué)的程序進(jìn)行檢查,程序必須能夠?qū)崿F(xiàn)所有要求的功能,并對指定的任一模塊進(jìn)行詳細(xì)的講解。若未通過檢查視為本次實驗不合格。4.實驗報告根據(jù)模板要求認(rèn)真填寫。實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)#include<stdio.h>#include<string.h>#include<stdlib.h>#defineN100#defineM10intf;typedefstruct{ charstr[20];}st;typedefstruct{ intlen; st*data; intlinesize;}linklist;voidinit(linklist&l) //初始化函數(shù){ l.len=0; l.data=(st*)malloc(N*sizeof(st)); l.linesize=N;}voidinput(linklist&l,inti) //輸入函數(shù){ printf("請輸入第%d個數(shù)據(jù):\t",i+1); fflush(stdin); gets(l.data[i].str);}voidmenu(){ charch; printf("\t|*************************主菜單*************************|\n"); printf("\t||\n"); printf("\t|1、錄入數(shù)據(jù)2、查詢數(shù)據(jù)|\n"); printf("\t||\n"); printf("\t|3、刪除數(shù)據(jù)4、插入數(shù)據(jù)|\n"); printf("\t||\n"); printf("\t|5、修改數(shù)據(jù)6、退出系統(tǒng)|\n"); printf("\t||\n"); printf("\t|********************************************************|\n"); printf("\t請輸入你想進(jìn)行的操作(1~6):\t"); fflush(stdin); scanf("%d",&f); system("cls"); if(f>6||f<1) { printf("輸入錯誤!\n按任意鍵返回主菜單重新輸入!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu(); }}voiddisplay(linklist&l) //輸出函數(shù){ inti;charch; if(l.len==0) { printf("順序表為空!\n按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu(); } for(i=0;i<l.len;i++) { printf("第%d個數(shù)據(jù)是:\t",i+1); puts(l.data[i].str); }}voidcreatlist(linklist&l) //創(chuàng)建順序表{ inti; i=l.len; charch,ch1; if(l.len==0) { printf("|*************************開始創(chuàng)建順序表*************************|\n"); } input(l,i); i++; l.len++; printf("是否繼續(xù)輸入?<y/n>:\t"); fflush(stdin); scanf("%c",&ch); while(ch=='y'||ch=='Y') { if(l.len>=l.linesize) { st*newbase; newbase=(st*)realloc(l.data,(N+M)*sizeof(st)); l.data=newbase; l.linesize+=M; } input(l,i); i++; l.len++; fflush(stdin); //ch=getchar(); printf("是否繼續(xù)輸入?<y/n>:\t"); scanf("%c",&ch); } system("cls"); printf("輸入完成后的數(shù)據(jù)為:\n"); display(l); printf("按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch1); system("cls"); menu();}intdatasearch(linklist&l) //查詢函數(shù){ stshuju; inti,j; j=-1; if(l.len==0) { returnj; } printf("請輸入你要查詢的數(shù)據(jù):\t"); fflush(stdin); gets(shuju.str); i=0; while(i<l.len) { if(strcmp(l.data[i].str,shuju.str)==0) { j=i+1; printf("該數(shù)據(jù)的位置是:%d\n",j); returnj; } i++; } printf("未找到該數(shù)據(jù)!\n"); returnj;}voiddatadelete(linklist&l) //刪除函數(shù){ charch; inti,j; printf("請輸入你需要刪除的數(shù)據(jù)的位置:\n"); fflush(stdin); scanf("%d",&i); for(j=i-1;j<l.len;j++) { l.data[j]=l.data[j+1]; } l.len--; printf("刪除成功!\n"); printf("刪除后的數(shù)據(jù)為:\n"); display(l); printf("按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu();}voiddatainsert(linklist&l) //插入函數(shù){ inti,j; charch; charshuju[20]; if(l.len>=l.linesize) { st*newbase; newbase=(st*)realloc(l.data,(N+M)*sizeof(st)); l.data=newbase; l.linesize+=M; } printf("請輸入你要插入數(shù)據(jù)的位置:\n"); fflush(stdin); scanf("%d",&i); printf("請輸入你要插入的數(shù)據(jù):\n"); fflush(stdin); gets(shuju); for(j=l.len-1;j>=i-1;j--) { l.data[j+1]=l.data[j]; } strcpy(l.data[i-1].str,shuju); l.len++; printf("插入成功!\n"); printf("插入完成后的數(shù)據(jù)為:\n"); display(l); printf("按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu();}voiddatamodify(linklist&l){ inti; charshuju[20]; charch,ch1; printf("請輸入你要修改的數(shù)據(jù)的位置:\t"); fflush(stdin); scanf("%d",&i); printf("第%d個數(shù)據(jù)是:\t%s\n",i,l.data[i-1].str); printf("確認(rèn)修改?<y/n>\t"); fflush(stdin); scanf("%c",&ch); if(ch=='y'||ch=='Y') { printf("請輸入修改后的數(shù)據(jù):\t"); fflush(stdin); gets(shuju); strcpy(l.data[i-1].str,shuju); printf("修改成功!\n"); printf("修改完成后的數(shù)據(jù)為:\n"); display(l); } printf("按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch1); system("cls"); menu();}voidmain(){ inti; charch; linklistl; init(l); system("colora"); menu(); while(f!=0) { switch(f) { case1:creatlist(l);break; case2:i=datasearch(l); printf("按任意鍵返回主菜單!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu();break; case3:datadelete(l);break; case4:datainsert(l);break; case5:datamodify(l);break; case6:exit(0); } }}實驗結(jié)果分析及心得體會成績評定教師簽名:2013年月日年級班號
學(xué)號
專業(yè)自動化
姓名實驗名稱單循環(huán)鏈表的基本操作實驗類型設(shè)計型綜合型創(chuàng)新型√實驗?zāi)康幕蛞髮嶒炓螅?.理解線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲方式及其特點。 2.掌握對鏈表存儲結(jié)構(gòu)的描述、基本操作的算法實現(xiàn)。3.通過實驗掌握對C語言指針的基本應(yīng)用。實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)#include<stdio.h>#include<stdlib.h>structlist{ charc; structlist*next;};intflag=1;structlist*_creat_(){ structlist*p1,*p2,*head; head=p1=p2=(list*)malloc(sizeof(structlist)); p1->c=getchar(); while(p1->c!='#') { p2=p1; p1=(list*)malloc(sizeof(structlist)); p1->c=getchar(); p2->next=p1; } p2->next=NULL; returnhead;}void_search_(structlist*p,charc){ for(;p;p=p->next) if(p->c==c) { printf("找到%c\n",c); return; } printf("未找到%c\n",c);}structlist*_insert_(structlist*p,intpos,charc){ structlist*t,*pre,*head=p; t=(list*)malloc(sizeof(structlist)); t->c=c; if(pos<=1) { t->next=p; returnt; } while(--pos&&p->next) { pre=p; p=p->next; } if(p->next==NULL) { p->next=t; t->next=NULL; returnhead; } t->next=p; pre->next=t; returnhead;}structlist*_delete_(structlist*p,charc){ structlist*head=p,*pre; while(p) { if(p->c==c) break; pre=p; p=p->next; } if(p==NULL) returnhead; elseif(p==head) { head=p->next; free(p); returnhead; } else { pre->next=p->next; free(p); returnhead; }}void_print_(structlist*p){ for(;p;p=p->next) putchar(p->c); putchar('\n');}voidmenu(){ charch; printf("\t\t1、創(chuàng)建單循環(huán)鏈表\n\n"); printf("\t\t2、查找字符\n\n"); printf("\t\t3、插入字符\n\n"); printf("\t\t4、刪除字符\n\n"); printf("\t\t5、退出操作\n\n"); printf("\t****************************************\n"); printf("\t\t輸入操作序號:"); fflush(stdin); scanf("%d",&flag); if(flag<1||flag>5) { printf("操作序號輸入錯誤!\n"); printf("按回車鍵返回重新輸入!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); menu(); }}voidmain(){ structlist*p; charc,ch; intn; while(flag!=0) { menu(); switch(flag) { case1: printf("輸入一串字母'#'結(jié)束:\n"); p=_creat_(); _print_(p);break; case2: printf("輸入要查找的字母:\n"); scanf("\n%c",&c); _search_(p,c);break; case3: printf("輸入要插入的字母和位置:\n"); scanf("\n%c",&c); scanf("%d",&n); p=_insert_(p,n,c); _print_(p);break; case4: printf("輸入要刪除的字母:\n"); scanf("\n%c",&c); p=_delete_(p,c); _print_(p);break; case5:exit(0); } printf("按回車鍵返回!\n"); fflush(stdin); scanf("%c",&ch); system("cls"); }}實驗結(jié)果分析及心得體會成績評定教師簽名:2013年月日年級2012班號
學(xué)號專業(yè)
姓名實驗名稱二叉樹的基本操作實驗類型設(shè)計型綜合型創(chuàng)新型√實驗?zāi)康幕蛞髮嶒炓螅?)從鍵盤輸入二叉樹的各結(jié)點值,按先序遞歸方式創(chuàng)建二叉樹2)分別實現(xiàn)先序、中序、后序遞歸遍歷二叉樹3)輸出二叉樹的高度4)輸出二叉樹的按層次遍歷序列*5)以菜單方式運(yùn)行實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)實驗原理(算法流程)#include<stdio.h>#include<stdlib.h>#include<string.h>typedefcharelemtype;typedefstructnode{ elemtypedata; structnode*lchild,*rchild;}bitree;intflag;bitree*creat_tree() //創(chuàng)建二叉樹{ charc;bitree*root; printf("輸入二叉樹的節(jié)點:\t"); fflush(stdin); scanf("%c",&c); if(c=='@') root=NULL; else { root=(bitree*)malloc(sizeof(bitree)); root->data=c; root->lchild=creat_tree(); root->rchild=creat_tree(); } return(root); }voidDLR(bitree*r) //先序遍歷{ if(r!=NULL) { printf("%c",r->data); DLR(r->lchild); DLR(r->rchild); }}voidLDR(bitree*r) //中序遍歷{ if(r!=NULL) { LDR(r->lchild); printf("%c",r->data); LDR(r->rchild); }}voidLRD(bitree*r) //后續(xù)遍歷{ if(r!=NULL) { LRD(r->lchild); LRD(r->rchild); printf("%c",r->data); }}intbitreeDepth(bitree*r) //求二叉樹的深度{ inth1,h2; if(r==NULL) return0; else { h1=bitreeDepth(r->lchild); h2=bitreeDepth(r->rchild); if(h1>h2) returnh1+1; else returnh2+1; }}voidmenu(){ charch; system("cls"); printf("\t******************二叉樹的基本操作******************\n\n"); printf(" 1、創(chuàng)建二叉樹\n\n"); printf("\t2、二叉樹的先序遍歷\n\n"); printf("\t3、二叉樹的中序遍歷\n\n"); printf("\t4、二叉樹的后序遍歷\n\n"); printf("\t5、二叉樹的深度\n\n"); printf("\t6、退出操作\n\n"); printf("\t****************************************************\n"); printf("\t請輸入操作序號:\t"); fflush(stdin); scanf("%d",&flag); if(flag<1||flag>6) { system("cls"); printf("輸入操作序號錯誤!\n"); printf("按回車鍵返回重輸入!\n"); fflush(stdin); scanf("%c",&ch); menu(); }}voidmain(){ charch; intj; bitree*r; while(1) { system("color1e"); inti; menu(); switch(flag) { case1:system("cls");r=creat_tree();menu();break; case2:DLR(r);printf("\n"); printf("按回車鍵返回...\n"); fflush(stdin); scanf("%c",&ch);break; case3:LDR(r);printf("\n"); printf("按回車鍵返回...\n"); fflush(stdin); scanf("%c",&ch);break; case4:LRD(r);printf("\n"); printf("按回車鍵返回...\n"); fflush(stdin); scanf("%c",&ch);break; case5:j=bitreeDepth(r);printf("此二叉樹的深度是%d\n",j);printf("按回車鍵返回...\n");fflush(stdin);scanf("%c",&ch);break; case6:exit(0); } }}實驗結(jié)果分析及心得體會成績評定教師簽名:2013年月日年級2012班號
學(xué)號專業(yè)
姓名實驗名稱內(nèi)部排序算法實驗類型設(shè)計型綜合型創(chuàng)新型√實驗?zāi)康幕蛞髮嶒炓螅簩Υ鎯υ跀?shù)組中的整數(shù)序列進(jìn)行排序,要求實現(xiàn)冒泡排序算法(進(jìn)行優(yōu)化)和其它任意一種排序算法。 實驗原理(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度汽車租賃與智能交通系統(tǒng)對接合同3篇
- 2025-2030全球全自動農(nóng)業(yè)機(jī)器人行業(yè)調(diào)研及趨勢分析報告
- 2024年全國數(shù)控技能大賽理論考試題庫-上(單選題) (二)
- 2025年度鋼管架施工設(shè)備租賃合同樣本
- 2025年度個人反擔(dān)保合同糾紛解決協(xié)議
- 2025年度數(shù)字電視信號接收器采購合同4篇
- 2025版施工合同擔(dān)保人資質(zhì)審核及責(zé)任規(guī)范3篇
- 教育者與科技聯(lián)手強(qiáng)化校園安全措施
- 2025年度商鋪物業(yè)管理與商業(yè)策略規(guī)劃合同4篇
- 二零二五年度茶館社區(qū)服務(wù)合作協(xié)議4篇
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 電力溝施工組織設(shè)計-電纜溝
- 單位往個人轉(zhuǎn)賬的合同(2篇)
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運(yùn)動能力測評規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計-畢業(yè)論文
- 高危妊娠的評估和護(hù)理
- 妊娠合并強(qiáng)直性脊柱炎的護(hù)理查房
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
評論
0/150
提交評論