實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)_第1頁
實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)_第2頁
實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)_第3頁
實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)_第4頁
實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課程設(shè)計(jì)題目:實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)姓名:楊靜學(xué)號(hào):2023114105班級(jí):2班〔44號(hào)〕組長:指導(dǎo)老師:解德祥計(jì)算機(jī)與信息學(xué)院實(shí)驗(yàn)一線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康恼莆站€性表的順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu);熟練掌握順序表和鏈表根本算法的實(shí)現(xiàn);掌握利用線性表數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問題的方法和根本技巧;按照實(shí)驗(yàn)題目要求獨(dú)立正確地完成實(shí)驗(yàn)內(nèi)容〔編寫、調(diào)試算法程序,提交程序清單及及相關(guān)實(shí)驗(yàn)數(shù)據(jù)與運(yùn)行結(jié)果〕;按時(shí)提交實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)環(huán)境:計(jì)算機(jī)、C語言程序設(shè)計(jì)環(huán)境實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí),選做實(shí)驗(yàn)。實(shí)驗(yàn)內(nèi)容一、順序表的根本操作實(shí)現(xiàn)實(shí)驗(yàn)要求:數(shù)據(jù)元素類型ElemType取整型int。按照順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)如下算法〔各算法邊界條件和返回結(jié)果適當(dāng)給出〕:創(chuàng)立任意整數(shù)線性表〔即線性表的元素值隨機(jī)在鍵盤上輸入〕,長度限定在20之內(nèi);打印〔遍歷〕該線性表〔依次打印出表中元素值〕;在線性表中查找第i個(gè)元素,并返回其值;在線性表中第i個(gè)元素之前插入一元素;在線性表中刪除第i個(gè)元素;求線性表中所有元素值〔整數(shù)〕之和;二、鏈表〔帶頭結(jié)點(diǎn)〕根本操作實(shí)驗(yàn)要求:數(shù)據(jù)元素類型ElemType取字符型char。按照動(dòng)態(tài)單循環(huán)鏈表結(jié)構(gòu)實(shí)現(xiàn)如下算法〔各算法邊界條件適當(dāng)給出〕:創(chuàng)立任意字符型有序〔遞增排序〕單循環(huán)鏈表〔即鏈表的字符元素隨機(jī)在鍵盤上輸入〕,長度限定在15之內(nèi);打印〔遍歷〕該鏈表〔依次打印出表中元素值〕;在鏈表中查找第i個(gè)元素,i合法返回元素值,否那么,返回FALSE;在鏈表中查找與一字符相同的第一個(gè)結(jié)點(diǎn),有那么返回TRUE,否那么,返回FALSE;在鏈表中按照有序方式插入一字符元素;在線性表中刪除第i個(gè)結(jié)點(diǎn);計(jì)算鏈表的長度。實(shí)驗(yàn)步驟:C源程序代碼如下:#include<stdio.h>#defineOK1#defineERROR0#defineMAXSIZE20typedefintElemType;typedefstruct{ElemTypeelem[MAXSIZE];intlast;}SeqList;voidCreateSeqList(SeqList*L){intx,i=0; printf("請輸入正整數(shù),不超過20個(gè):\n");scanf("%d",&x); while(i<MAXSIZE) {L->elem[i]=x;scanf("%d",&x);i++; }L->last=i;}voidPrintList(SeqList*L){inti;printf("數(shù)據(jù)元素為:\n");for(i=0;i<L->last;i++)printf("%d\n",L->elem[i]);}intLocate(SeqList*L,inti){if(i>=1&&i<=L->last)returnL->elem[i-1]; elsereturn0;}intInsList(SeqList*L,inti,ElemTypee){ intk; if((i<1)||(i>L->last+2)) {printf("插入i位置值不合法");return(ERROR);} if(L->last>=MAXSIZE-1) { printf("表已滿,無法插入");return(ERROR);} for(k=L->last;k>=i-1;k++) L->elem[k+1]=L->elem[k]; L->elem[i-1]=e;L->last++;return(OK);}intDelList(SeqList*L,inti,ElemType*e){intk;if((i<1)||(i>L->last+1)){ printf("刪除位置不合法");return(ERROR); }*e=L->elem[i-1];for(k=i;i<=L->last;k++) L->elem[k-1]=L->elem[k];L->last--;return(OK);}intSumList(SeqList*L){ inti,sum=0; for(i=0;i<=L->last;i++) sum=sum+L->elem[i]; return(sum);}voidjiemian(){SeqListL;intj,i,a; printf("創(chuàng)立新鏈表請按1\n打印鏈表請按2\n按序號(hào)查找元素請按3\n在鏈表中查找與一字符相同的第一個(gè)結(jié)點(diǎn)請按4\n在鏈表中按照有序方式插入一字符元素請按5\n在線性表中刪除第i個(gè)結(jié)點(diǎn)請按6\n計(jì)算鏈表的長度請按7\n操作結(jié)束請按0\n");scanf("%d",&j);while(j){ switch(j) { case1:CreateSeqList(&L);break; case2:printf("打印順序表如下:\n"); PrintList(&L);break; case3:printf("請問你要查找第幾個(gè)元素:\n"); scanf("%d",&i); if(Locate(&L,i)) printf("您要找的元素為%d\n",Locate(&L,i)); elseprintf("i值不合法!");break; case4:printf("請您輸入選擇插入位置以及輸入插入元素:\n"); scanf("%d%d",&i,&a); if(InsList(&L,i,a))PrintList(&L);elseprintf("i值不合法!\n");break; case5: printf("請您輸入要?jiǎng)h除元素的位置:\n"); scanf("%d",&i); if(DelList(&L,i,&a))PrintList(&L);elseprintf("i值不合法!\n");break; case6:printf("所有元素之和為:%d\n",SumList(&L));break;case7:break;default:printf("數(shù)據(jù)輸入錯(cuò)誤,請重新輸入!");} printf("操作結(jié)束請按7;繼續(xù)操作請按1-6,請輸入您的選擇:\n"); scanf("%d",&j);}}voidmain(){jiemian();}鏈表〔帶頭結(jié)點(diǎn)〕根本操作實(shí)驗(yàn):#include"stdlib.h"#include"stdio.h"structLNode{charelem;structLNode*next;}*l,*p,*q;voidOrder(structLNode*l,intn){inti;charswap,*e,*f;for(i=1;i<=n-1;i++){p=l->next;while(p->next!=l){if(p->elem>p->next->elem){e=&p->elem;f=&p->next->elem;swap=*e;*e=*f;*f=swap;}p=p->next;}}return;}voidPrint(structLNode*l,intn){inti;p=l->next;for(i=1;i<=n;i++){printf("%c\n",p->elem);p=p->next;}printf("\n");return;}voidLocate(structLNode*l,intn,intm){inti;if(m>n){printf("FALSE!\t");return;}else{p=l;for(i=1;i<=m;i++){p=p->next;}printf("Theelemis:%c\n",p->elem);}return;}voidInsertelem(structLNode*l,intn,charm){q=(structLNode*)malloc(sizeof(structLNode));q->next=l->next;l->next=q;q->elem=m;n=n+1;Order(l,n);Print(l,n);return;}voidDelete(structLNode*l,intn,intm){inti;p=l;for(i=1;i<m;i++){p=p->next;}p->next=p->next->next;n=n-1;printf("刪除后的鏈表為:\n");Print(l,n);return;}voidLength(intn){inti;intlength=0;for(i=1;i<=n+1;i++){length=length+sizeof(structLNode);}printf("--------------------------------------------------------------\n");printf("Thelengthofthelistis:%d\n",length);return;}main(){printf("--------------歡送進(jìn)入數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)設(shè)計(jì)--------------\n"); inti,a,k,n;charc,s;l=(structLNode*)malloc(sizeof(structLNode));l->next=NULL;printf("請輸入鏈表的元素?cái)?shù):");scanf("%d",&n);getchar();if(n<=15){for(i=n;i>0;i--){q=(structLNode*)malloc(sizeof(structLNode));q->next=l->next;l->next=q;}p=l;while(p->next!=NULL)p=p->next;p->next=l; printf("輸入元素:");p=l->next;for(i=1;i<=n;i++){scanf("%c",&p->elem);getchar();p=p->next;}Order(l,n);printf("--------------------------------------------------------------\n"); printf("您輸入的元素為:\n");Print(l,n);printf("--------------------------------------------------------------\n");printf("輸入您想查找的元素序號(hào):");scanf("%d",&a);getchar();Locate(l,n,a);printf("--------------------------------------------------------------\n");printf("輸入您想插入的元素:");scanf("%c",&s);ge

溫馨提示

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

最新文檔

評論

0/150

提交評論