


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一篇:串-數據結構實驗報告【源程序】:#include#include#includevoidchoose(char*s,inti,intm,char*t);//i位置截取m個字符函數voidmain()主函數{char*s,*t;inti,sl,m;s=(char*)malloc(100*sizeof(char));t=(char*)malloc(100*sizeof(char));printf("\ns=?");gets(s);printf("\ns=%s\n",s);printf("\ni=?");scanf("%d",&i);printf("\ni=%d\n",i);printf("\nm=?");scanf("%d",&m);printf("\nm=%d\n",m);sl=strlen(s);if(i>sl)printf("i位置出錯\n");elseif(i+m>sl+1)printf("m位置出錯\n");else{choose(s,i,m,t);printf("\n子串為t=%s\n",t);}}//end_mainvoidchoose(char*s,inti,intm,char*t){intn;intj=0;for(n=i;n三.實驗結論及分析串的存儲結構包含有順序存儲結構和鏈式存儲結構。在串的順序存儲結構中,表示串的長度通常有兩種方法:一種方法是設置一個串的長度參數,其優點在于便于在算法中用長度參數控制循環過程;另一種方法是在串值得末尾添加結束標記,此種方法的優點在于便于系統自動實現。在串的存儲過程中,串值用驗在實習一中,gets(),scantf()兩個函數的不同在于,gets()通過鍵盤接受字符時,直到遇到換行符結束,而scanf()結束標志可以是‘空格鍵‘abc。四、實驗總結本次試驗之后,學會了串函數的相關調用以及串的相應操作。第二篇:數據結構實驗報告注意:實驗結束后提交一份實驗報告電子文檔8宋思怡《數據結構》實驗報告(一)學號:姓名:專業年級:實驗名稱:線性表414實驗目的:1、熟悉線性表的定義及其順序和鏈式存儲結構;2、熟練掌握線性表在順序存儲結構上實現基本操作的方法;3、熟練掌握在各種鏈表結構中實現線性表基本操作的方法;4、掌握用C/C++語言調試程序的基本方法。實驗內容:一、編寫程序實現順序表的各種基本運算,并在此基礎上設計一個主程序完成如下功能:(1)初始化順序表L;(2)依次在L尾部插入元素-1,21,13,24,8;輸出順序表L;輸出順序表L長度;判斷順序表L是否為空;輸出順序表L3個元素;24的位置;在L40;輸出順序表L;L5個元素;源代碼調試分析(給出運行結果界面)二、編寫程序實現單鏈表的各種基本運算,并在此基礎上設計一個主程序完成如下功能:????????小結或討論:實驗中遇到的問題和解決方法實驗中沒有解決的問題體會和提高第三篇:數據結構實驗報告南京信息工程大學實驗(實習)報告實驗(實習)名稱數據結構實驗(實習)日期2011-11-2得分指導教師周素萍系公共管理系專業信息管理與信息系統年級10120102307003實驗一順序表的基本操作及C語言實現【實驗目的】1、順序表的基本操作及C語言實現【實驗要求】1、用C語言建立自己的線性表結構的程序庫,實現順序表的基本操作。2、對線性表表示的集合,集合數據由用戶從鍵盤輸入(數據類型為整型得數據按從小到大的順序存放,將兩個集合的并的結果存儲在一個新的線性表集合中,并輸出?!緦嶒瀮热荨?、根據教材定義的順序表機構,用C查找等操作;2、利用上述順序表操作實現如下程序:建立兩個順序表表示的集合(復的元素,并求這樣的兩個集合的并。【實驗結果】[實驗數據、結果、遇到的問題及解決]一.StatusInsertOrderList(SqList&va,ElemTypex){}二.StatusDeleteK(SqList&a,inti,intk){1//在非遞減的順序表va中插入元素x并使其仍成為順序表的算法inti;if(va.length==va.listsize)return(OVERFLOW);for(i=va.length;i>0,x}//注意i的編號從0開始intj;if(ia.length-1||ka.length-i)returnINFEASIBLE;for(j=0;j三.//將合并逆置后的結果放在C表中,并刪除B表StatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C){LinkListpa,pb,qa,qb;pa=A;pb=B;qa=pa;qb=pb;//pa的前驅指針//pb的前驅指針pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){}while(pa){}qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;if(pa->datadata){}else{}qb=pb;pb=pb->next;qb->next=A->next;將當前最小結點插入A表表頭A->next=qb;qa=pa;pa=pa->next;qa->next=A->next;A表表頭A->next=qa;}}pb=B;free(pb);returnOK;qb=pb;pb=pb->next;qb->next=A->next;A->next=qb;順序表就是把線性表的元素存儲在數組中,元素之間的關系直接通過相鄰元素的位置來表達。優點:簡單,數據元素的提取速度快;)靜態存儲,無法預知問題規模的大小,可能空間不足,或浪費存儲空間2)求兩個集合的并集s1s2的并集,并將結果存入ss1復制到ss2中的每個元素依次插入到集合s中,當然重復的元素不應該被插入,最后在s中就s1s2的并集,也就是在s所對應的實際參數集合中得到并集。第四篇:數據結構實驗報告數據結構實驗報告第一次實驗學號:20141060106姓名:葉佳偉一、實驗目的1、復習變量、數據類型、語句、函數;2、掌握函數的參數和值;3、了解遞歸。二、實驗內容1(必做題)均分。2必做題采用遞歸和非遞歸方法計算k階裴波那契序列的第n,f1=0,…,fk-2=0,fk-1=1,fn=fn-1+fn-2+…+fn-k(n>=k)k(13(選做題)采用遞歸和非遞歸方法求解漢諾塔問題,問題描述如下:有三根柱子ABC,在柱子A上從下向上有n個從大到小的圓盤,在柱子B和C上沒有圓盤,現需將柱子A上的所有圓盤移到柱子C能大的在下,小的在上。要求:輸入n,輸出移動步驟。三、算法描述(采用自然語言描述)2.四、詳細設計(畫出程序流程圖)1.五、程序代碼(給出必要注釋)1.#includefloatave(intscore[],intk){inti;floats=0.0,ave;for(i=0;i}intmax(intscore[],intk){inti,max;max=score[0];for(i=0;imax)max=score[i];returnmax;}intmin(intscore[],intk){inti,min;min=score[0];for(i=0;i#includeintf(intn){intk;if(nelsereturn(2*f(n-1)-f(n-k-1));}voidmain(){intk,n,fn=0;kn:[k(11){fn=(n);printf("f%d=%d\n",n,fn);break;}}2.2#include六、測試和結果(給出測試用例以及測試結果)1.2.七、用戶手冊(告訴用戶如何使用程序)1.使用MicrcosoftVisualC++。2.使用MicrcosoftVisualC++。3第五篇:數據結構實驗報告數據結構實驗報告一.題目要求1)編程實現二叉排序樹,包括生成、插入,刪除;2)對二叉排序樹進行先根、中根、和后根非遞歸遍歷;3)每次對樹的修改操作和遍歷操作的顯示結果都需要在屏幕上用樹的形狀表示出來。4)分別用二叉排序樹和數組去存儲一個班(50人以上)的成員信息(至少包括學號、姓名、成績3項),對比查找效率,并說明在什么情況下二叉排序樹效率高,為什么?二.解決方案對于前三個題目要求,我們用一個程序實現代碼如下#include#include#include#include"Stack.h"http://棧的頭文件,沒有用上typedefintElemType;//數據類型typedefintStatus;//返回值類型//定義二叉樹結構typedefstructBiTNode{ElemTypedata;structBiTNode*lChild,左右子樹域}BiTNode,*BiTree;intInsertBST(BiTree&T,intkey){//樹函數if(T==NULL){T=(BiTree)malloc(sizeof(BiTNode));T->data=key;T->lChild=T->rChild=NULL;return1;}elseif(keydata){InsertBST(T->lChild,key);}elseif(key>T->data){InsertBST(T->rChild,key);}elsereturn0;}BiTreeCreateBST(inta[],intn){//創建二叉樹函數BiTreebst=NULL;inti=0;while(i//數據域InsertBST(bst,a[i]);
入二叉i++;}returnbst;}intDelete(BiTree&T){BiTreeq,s;}if(!(T)->rChild){//右子樹為空重接它的左子樹q=T;T=(T)->lChild;free(q);}else{if(!(T)->lChild){//若左子樹空則重新接它的右子樹q=T;T=(T)->rChild;}else{q=T;s=(T)->lChild;while(s->rChild){q=s;s=s->rChild;}(T)->data=s->data;//s指向被刪除結點的前驅if(q!=T)q->rChild=s->lChild;elseq->lChild=s->lChild;free(s);}}return1;//刪除函數,在T中刪除key元素intDeleteBST(BiTree&T,intkey){if(!T)return0;else{if(key==(T)->data)returnDelete(T);else{if(keydata)returnDeleteBST(T->lChild,key);elsereturnDeleteBST(T->rChild,key);}}}intPosttreeDepth(BiTreeT){//求深度inthr,hl,max;if(!T==NULL){hl=PosttreeDepth(T->lChild);hr=PosttreeDepth(T->rChild);max=hl>hr?hl:hr;returnmax+1;}elsereturn0;}voidprinttree(BiTreeT,intnlayer){//打印二叉樹if(T==NULL)return;printtree(T->rChild,nlayer+1);for(inti=0;i");}printf("%d\n",T->data);printtree(T->lChild,nlayer+1);}voidPreOrderNoRec(BiTree/歷{BiTreep=root;BiTreestack[50];intnum=0;while(NULL!=p||num>0){while(NULL!=p){printf("%d",p->data);stack[num++]=p;p=p->lChild;}num--;p=stack[num];p=p->rChild;}printf("\n");}voidInOrderNoRec(BiTreeroot)//中序非遞歸遍歷{BiTreep=root;}intnum=0;BiTreestack[50];while(NULL!=p||num>0){while(NULL!=p){stack[num++]=p;p=p->lChild;}num--;p=stack[num];printf("%d",p->data);p=p->rChild;}printf("\n");voidPostOrderNoRec(BiTreeroot)//后序非遞歸遍歷{BiTreep=root;BiTreestack[50];intnum=0;BiTreehave_visited=NULL;while(NULL!=p||num>0){while(NULL!=p){stack[num++]=p;p=p->lChild;}
序非遞歸遍p=stack[num-1];if(NULL==p->rChild||have_visited==p->rChild){printf("%d",p->data);num--;have_visited=p;p=NULL;}else{p=p->rChild;}}printf("\n");}intmain(){//主函數printf("---------------------二叉排序樹的實現 ");printf("\n");intlayer;inti;intnum;輸入節點個數:");scanf("%d",&num);依次輸入這些整數(要不相等");int*arr=(int*)malloc(num*sizeof(int));for(i=0;iscanf("%d",arr+i);}BiTreebst=CreateBST(arr,num);printf("\n");printf("二叉樹創建成功!");printf("\n");layer=PosttreeDepth(bst);printf("樹狀圖為:\n");printtree(bst,layer);intj;intT;intK;for(;;){loop:printf("\n");printf("***********************************************:");printf("\n");printf("1:插入節點刪除節點3:打印二叉樹4:非遞歸遍歷二叉樹5:退出");scanf("%d",&j);switch(j){case1:printf("輸入要插入的節點:");scanf("%d",&T);InsertBST(bst,T);printf("插入成功!");printf("樹狀圖為:\n");printtree(bst,layer);break;case2:}printf("輸入要刪除的節點");scanf("%d",&K);DeleteBST(bst,K);printf("刪除成功!");printf("樹狀圖為:\n");printtree(bst,layer);break;case3:layer=PosttreeDepth(bst);printtree(bst,layer);break;case4:printf("非遞歸遍歷二叉樹");printf("先序遍歷:\n");PreOrderNoRec(bst);printf("中序遍歷:\n");InOrderNoRec(bst);printf("后序遍歷:\n");PostOrderNoRec(bst);printf("樹狀圖為:\n");printtree(bst,layer);break;case5:printf("程序執行完畢!");return0;}gotoloop;}return0;對于第四小問,要儲存學生的三個信息,需要把上面程序修改一下,二叉樹結構變為typedefintElemType;//數據類型typedefstringSlemType;typedefintStatus;//返回值類型//定義二叉樹結構typedefstructBiTNode{SlemTypename;ElemTypescore;ElemTypeno;//數據域structBiTNode*lChild,*rChild;//左右子樹域}BiTNode,*BiTree;參數不是key,而是另外三個intInsertBST(BiTree&T,intno,intscore,stringname){//插入二叉樹函數if(T==NULL){T=(BiTree)malloc(sizeof(BiTNode));T->no=no;T->name=name;T->score=score;T->lChild=T->rChild=NULL;return1;}elseif(nono){InsertBST(T->lChild,no,score,name);}elseif(key>T->data){InsertBST(T->rChild,no,score,name);}elsereturn0;}其他含參函數也類似即可完成50個信息存儲用數組存儲50個信息,查看以往代碼#include#includeusingn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給員工培訓財務管理制度
- 倉庫干飯日常管理制度
- 中鐵十局公司管理制度
- 企業招聘合同管理制度
- 倉庫工具使用管理制度
- 代辦公司財務管理制度
- 五金制造公司管理制度
- 食源性監測檔案管理制度
- 韓國企業復工后管理制度
- 人事遲到請假管理制度
- 2024年高級經濟師-金融專業實務考試歷年真題摘選附帶答案版
- 高中語文《望海潮》《揚州慢》聯讀+課件+統編版高中語文選擇性必修下冊
- 一年級小學生競選三好學生演講稿
- JTS311-2011 港口水工建筑物修補加固技術規范
- 貓咪洗護免責協議書
- 產后出血患者血液管理專家共識
- 2024年3月2日湖北遴選筆試真題及解析(地市級卷)
- 中英文對照報價單模板
- 茂名酒店行業報告
- 小區物業工程部修理工作標準及細節要求
- 加強高風險作業的安全管理
評論
0/150
提交評論