數(shù)據(jù)結(jié)構(gòu)實驗一_第1頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第2頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第3頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第4頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)實驗報告實驗一班級:06111504學號:1120151570姓名:劉庭欣1.實驗題目:采用單向環(huán)表實現(xiàn)約瑟夫環(huán)。請按以下要求編程實現(xiàn):從鍵盤輸入整數(shù)m,通過create函數(shù)生成一個具有m個結(jié)點的單向環(huán)表。環(huán)表中的結(jié)點編號依次為1,2,m。從鍵盤輸入整數(shù)s(1<=s<=m)和n,從環(huán)表的第s個結(jié)點開始計數(shù)為1,當計數(shù)到第n個結(jié)點時,輸出該第n結(jié)點對應的編號,將該結(jié)點從環(huán)表中消除,從輸出結(jié)點的下一個結(jié)點開始重新計數(shù)到n,這樣,不斷進行計數(shù),不斷進行輸出,直到輸出了這個環(huán)表的全部結(jié)點為止。例如,m=10,s=3,n=4。則輸出序列為:6,10,4,9,5,2,1,3,8,7。2

2、.源代碼: #include<stdio.h>#include<malloc.h>typedef struct list int num; struct list * next; list,* plist; plist h,p,q; void Create(int n) h=(plist)malloc(sizeof(list); h->next=NULL; h->num=0; while(-n) p=(plist)malloc(sizeof(list); p->num=n; p->next=h->next; h->next=p; wh

3、ile (p->next) p=p->next; p->next=h->next; void Find(int m,int s) p=h;while(p->num!=s) p=p->next; void OutNum(int n) while(p->next!=p) for(int i=1;i<n-1;i+) p=p->next; q=p->next; printf("%-4d",p->next->num); p->next=q->next; p=p->next; free(q); p

4、rintf("%-4dn",p->num); int main() int m,s,n; scanf("%d%d%d",&m,&s,&n); Create(m+1); Find(m,s); OutNum(n); 3. 運行結(jié)果截屏:4. 編寫與調(diào)試過程中遇到的問題:在編寫的過程中,首先遇到的困難是如何把算法轉(zhuǎn)化為一個c語言程序,對于鏈表的操作,自己已經(jīng)搞忘的差不多了,編寫的時候?qū)τ谌绾螌崿F(xiàn)一個環(huán)形鏈表,自己剛開始時有些不知所措,后來在同學的指導下,有了思路。還有就是對于把算法轉(zhuǎn)化為程序的步驟,自己還要加強。還有就是自己編寫程

5、序時,粗心大意,總是忘記加一些符號。比如第一次調(diào)試的時候,出現(xiàn)了這樣的錯誤。后來才發(fā)現(xiàn),少加了一個大括號,以后這種情況要少出現(xiàn)。1. 實驗題目:歸并順序表(選作)。請按以下要求編程實現(xiàn): 從鍵盤輸入兩個升序排列的整數(shù)序列l(wèi)inka和linkb,每個序列以輸入0為結(jié)束標記。 將鏈表linka和linkb歸并為linkc,linkc仍然為升序排列。歸并完成后,linka和linkb為空表。輸出linkc。 對linkc進行處理,保持升序不變,刪除其中重復的整數(shù),對重復的整數(shù)只保留一個,輸出刪除重復整數(shù)后的鏈表。例如:linka輸入為:10 20 30 40 50 0 歸并后的linkc為:10 1

6、5 20 20 25 30 30 35 40 40 45 50 50 刪除重復后的linkc為:10 15 20 25 30 35 40 45 502. 源代碼:#include <stdio.h>#include <malloc.h>typedef struct LNodeint data;struct LNode *next;LNode,*LinkList;void Creat(LinkList &L);void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc);void Delete

7、(LinkList &L);void Output(LinkList &L);int main()LinkList La,Lb,Lc;Creat(La);Creat(Lb);MergeList(La,Lb,Lc);free(La);free(Lb);Delete(Lc);Output(Lc);void Creat(LinkList &L)LinkList p,q;int num;L=(LinkList)malloc(sizeof(LNode);L->next=NULL;p=L;scanf("%d",&num);while(num!=0)

8、q=(LinkList)malloc(sizeof(LNode);q->data=num;q->next=p->next;p->next=q; p=q;scanf("%d",&num);void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)LinkList pa,pb,pc,p,q;pa=La->next;pb=Lb->next;Lc=(LinkList)malloc(sizeof(LNode);Lc->next=NULL;pc=Lc;while(

9、pa&&pb)q=(LinkList)malloc(sizeof(LNode);if(pa->data<=pb->data)q->data=pa->data;pa=pa->next;elseq->data=pb->data;pb=pb->next;q->next=pc->next;pc->next=q;pc=pc->next;while(pa)p=(LinkList)malloc(sizeof(LNode);p->data=pa->data;p->next=pc->next;p

10、c->next=p;pa=pa->next;while(pb) /p=(LinkList)malloc(sizeof(LNode);p->data=pb->data;p->next=pc->next;pc->next=p;pb=pb->next;void Delete(LinkList &L)LinkList p,q,r;p=L->next;q=L->next->next;r=q;while(q!=NULL)if(q->data=p->data)q=q->next;p->next=r->next;free(r);r=q;elsep=p->next;q=q->next;r=q;void Output(LinkList &L)LinkList p;p=L->next;while(p->next!=NULL)printf("%d,",p->data);p=p->next;printf("%dn",p-

溫馨提示

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

評論

0/150

提交評論