順序表實驗報告_第1頁
順序表實驗報告_第2頁
順序表實驗報告_第3頁
順序表實驗報告_第4頁
順序表實驗報告_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

西安理工大學(xué)實驗報告課程數(shù)據(jù)結(jié)構(gòu)實驗名稱線性表(順序表)系別信息科學(xué)系實驗日期2011—04—04專業(yè)班級媒體093班實驗報告日期2011—04—10姓名王亞丹學(xué)號3090342067驗證性實驗預(yù)習(xí)準備:1.實驗?zāi)康?(1).理解線性表的概念;(2).理解順序表存儲結(jié)構(gòu)概念和特點;(3).掌握順序表存儲結(jié)構(gòu)的建立、插入、刪除、查詢和輸出基本操作算法。2.實驗環(huán)境:Widows操作系統(tǒng)、C語言3.實驗內(nèi)容和要求:(1).實驗內(nèi)容:建立一個如下所示的學(xué)生信息表學(xué)號姓名性別年齡20001張三男2020002李四男22…………使用結(jié)構(gòu)體,用順序表完成以下內(nèi)容:a.初始化線性表為空;b.依次輸入數(shù)據(jù)元素;(由鍵盤輸入);c.完成數(shù)據(jù)元素的插入、刪除操作;d.取第i個數(shù)據(jù)元素;e.依次顯示當前線性表中的數(shù)據(jù)元素。(2).實驗要求:掌握順序表的定義與實現(xiàn),包括查找、插入、刪除算法的實現(xiàn)。二.實驗過程:1.實驗中的關(guān)鍵語句:在整個實驗中要執(zhí)行六個過程:(1).初始化順序表,調(diào)用boolInitSeqList(SeqList(&L))函數(shù)使順序表為空;(2).調(diào)用函數(shù)boolReadIn(stu*base,SeqList(&L)),從鍵盤向順序表中輸入數(shù)據(jù)元素;(3).調(diào)用函數(shù)intListInsert(SeqList(&L),intt,stux),在順序表中指定的位置插入數(shù)據(jù)元素;(4).調(diào)用函數(shù)intListDelete(SeqList(&L),intt,stux),刪除順序表中指定位置的數(shù)據(jù)元素;(5).調(diào)用函數(shù)intListGet(SeqList(&L),inti,stu*x),讀取指定學(xué)號的數(shù)據(jù)元素并顯示在屏幕上;(6).調(diào)用函數(shù)intPrintOutList(SeqList(&L)),顯示當前順序表中的數(shù)據(jù)元素在屏幕上;通過這六個過程的執(zhí)行,完成順序表的操作。2.程序流程圖:開始開始定義一個數(shù)據(jù)元素為結(jié)構(gòu)體的順序表定義一個數(shù)據(jù)元素為結(jié)構(gòu)體的順序表初始化線性表為空初始化線性表為空用ListGet(SeqList(&L),inti,stu*x)函數(shù)讀取某一個數(shù)據(jù)元素用ListGet(SeqList(&L),inti,stu*x)函數(shù)讀取某一個數(shù)據(jù)元素用ListDelete(SeqList(&L),intt,stux)函數(shù)刪除數(shù)據(jù)元素用ListInsert(SeqList(&L),intt,stux)函數(shù)向順序表中插入元素用ReadIn(stu*base,SeqList(&L))函數(shù)向順序表輸數(shù)據(jù)元素用用PrintOutList(SeqList(&L))函數(shù)顯示當前順序表中的數(shù)據(jù)元素結(jié)束結(jié)束三.實驗總結(jié):1.實驗程序(詳細設(shè)計):1.1主函數(shù)部分:#include"stdafx.h"#include"file1.h"#include"stdio.h"#include"stdlib.h"intmain(intargc,char*argv[]){intt=0,i=0;stusl; stu*e=NULL; SeqListL; stu*s=NULL;if(InitSeqList(L)) printf("線行表初始化成功,存儲容量為:%d",L.listsize); else printf("線行表初始化不成功"); ReadIn(s,L);PrintOutList(L);ListInsert(L,t,sl);PrintOutList(L);ListDelete(L,t,sl);PrintOutList(L);ListGet(L,i,e);PrintOutList(L); return0; }1.2函數(shù)定義部分:#include"stdafx.h"#include"file1.h"#include"Stdio.h"#include"stdlib.h"http://構(gòu)造一個空的線性表LboolInitSeqList(SeqList(&L)){ L.base=(stu*)malloc(MaxSize*sizeof(stu)); if(!L.base)returnfalse; L.length=0; L.listsize=MaxSize; returntrue;}//依次輸入學(xué)生信息boolReadIn(stu*base,SeqList(&L)){inti=0;printf("inputL.length:");scanf("%d",&L.length);printf("\n請輸入學(xué)生信息\n");while(i<L.length){printf("inputi:");scanf("%d",&i);printf("請輸入學(xué)號:");scanf("%d",&L.base[i].num); printf("請輸入姓名:");scanf("%s",L.base[i].name);printf("請輸入性別:");scanf("%s",L.base[i].sex);printf("請輸入年齡:");scanf("%d",&L.base[i].age); i++;}returntrue;}//數(shù)據(jù)元素的插入intListInsert(SeqList(&L),intt,stux){ intm=L.length; printf("請輸入插入的位置t:"); scanf("%d",&t); if(L.length>=MaxSize) { printf("順序表已滿無法插入!\n"); return0; } elseif(t<0||t>m) { printf("參數(shù)不合法!\n");return0; } else{ printf("請輸入學(xué)號\n請輸入姓名\n請輸入性別\n請輸入年齡\n"); scanf("%d%s%s%d",&x.num,,x.sex,&x.age); for(m=L.length;m>t;m--) L.base[m]=L.base[m-1];L.base[t]=x;L.length++; return1; }}//數(shù)據(jù)元素的刪除(第t個位置)intListDelete(SeqList(&L),intt,stux){ intj; printf("請輸入要刪除的位置t:"); scanf("%d",&t); for(j=t+1;j<=L.length;j++) L.base[j-1]=L.base[j];L.length--;return1;}//取第i個數(shù)據(jù)元素nintListGet(SeqList(&L),inti,stu*x){ intj; printf("請輸入要查詢的學(xué)號j:"); scanf("%d",&j); for(i=0;i<L.length;i++) { if(j==L.base[i].num)x=&L.base[i]; } printf("%d%s%s%d",x[0].num,x[0].name,x[0].sex,x[0].age); return0;}//顯示學(xué)生信息intPrintOutList(SeqList(&L)){intj=0;printf("顯示當前學(xué)生信息");while(j<L.length){printf("%d%s%s%d",L.base[j].num,L.base[j].name,L.base[j].sex,L.base[j].age);j++;}return0;}1.3接口部分:#defineMaxSize20typedefstruct{ intnum; charname[8]; charsex[8]; intage;}stu;typedefstruct{ stu*base; intlength; intlistsize;}SeqList;boolInitSeqList(SeqList(&L));boolReadIn(stu*base,SeqList(&L));intListInsert(SeqList(&L),intt,stux);intListDelete(SeqList(&L),intt,stux);intListGet(SeqList(&L),inti,stu*x);intPrintOutList(SeqList(&L));2.實驗結(jié)果:運行程序,通過調(diào)用函數(shù)執(zhí)行一系列所需要的操作,其結(jié)果如下:3.編寫及調(diào)試程序中遇到的問題及解決方法:函數(shù)—開始的時候使用for循環(huán),不能控制循環(huán)的條件,即使控制了,也不能正確執(zhí)行。讀取數(shù)據(jù)元素時,誤將==寫成=,導(dǎo)致錯誤。實驗過程中,sex要定義成數(shù)組,才能正確調(diào)試。格式運算符也要正確控制,否則系統(tǒng)會停止工作。4.實驗分析:通過實驗掌握了順序表的基本操作,如初始化、插入、讀取元素、刪除等等。并了解到線性表順序存儲結(jié)構(gòu)的特點,即邏輯關(guān)系上相鄰的兩個元素在物理位置上也相鄰,因此可以隨機存取表中

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論