資源描述:
《線性表操作實(shí)驗(yàn)報告.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、忻州師范學(xué)院計算機(jī)科學(xué)與技術(shù)系實(shí)驗(yàn)報告(第六組)組長:梁啟超組員:晉丹丹張艷華馬軍劉雪梅孫鈺林劉濤忻州師范學(xué)院計算機(jī)科學(xué)與技術(shù)系實(shí)驗(yàn)報告實(shí)驗(yàn)名稱線性表的操作專業(yè)班級計本1504班姓名梁啟超學(xué)號201508112036指導(dǎo)教師成績?nèi)掌?016/9/26組員分工晉丹丹(頭插法構(gòu)造單鏈表),張艷華(尾插法構(gòu)造單鏈表;)馬軍(遍歷單鏈表;)劉雪梅(按位序查找單鏈表;)孫鈺林(按值查找單鏈表;)劉濤(向單鏈表中插入元素;)一、實(shí)驗(yàn)?zāi)康氖炀氄莆站€性表的類型定義方法、存儲方法及其基本運(yùn)算(元素的插入、刪除等)的實(shí)現(xiàn)方法,培養(yǎng)綜合運(yùn)用所學(xué)知識,根據(jù)具體問題進(jìn)行數(shù)據(jù)結(jié)構(gòu)設(shè)計和算法設(shè)計
2、的能力。二、實(shí)驗(yàn)內(nèi)容用鏈表建立線性表,并進(jìn)行線性表相關(guān)操作。要求:要有良好的人機(jī)界面,有菜單形式實(shí)現(xiàn),具備頭插法、尾插法建鏈表、插入、刪除、顯示、以及按值與位序查找的功能。三、實(shí)驗(yàn)要求1.在問題分析的基礎(chǔ)上選擇合適的存儲結(jié)構(gòu),進(jìn)行算法設(shè)計,編制程序并上機(jī)調(diào)試成功。2.按要求完成實(shí)驗(yàn)報告。3.保存和打印出程序的運(yùn)行結(jié)果,并結(jié)合程序進(jìn)行分析。四、實(shí)驗(yàn)步驟1.需求分析本演示程序用C語言編寫,要有良好的人機(jī)界面,實(shí)現(xiàn)線性表操作的基本功能:頭插法、尾插法建鏈表、插入、刪除、顯示、以及按值與位序查找的功能。1.輸入的形式和輸入值的范圍:插入元素時需要輸入插入的位置和元素的值;刪
3、除元素時輸入刪除元素的位置;查找操作時需要輸入元素的值。在所有輸入中,元素的值都是整數(shù)。2.輸出的形式:在所有三種操作中都顯示操作是否正確以及操作后單鏈表的內(nèi)容。其中刪除操作后顯示刪除的元素的值,查找操作后顯示要查找元素的位置。3.程序所能達(dá)到的功能:完成單鏈表的生成、插入、刪除、查找操作4.測試數(shù)據(jù)2.概要設(shè)計1.為了實(shí)現(xiàn)上述程序功能,需要定義單鏈表的抽象數(shù)據(jù)類型:(1)createlist_l初始化:頭插法構(gòu)造單鏈表;(2)createlist_l2初始化:尾插法構(gòu)造單鏈表;兩種二選一;(2)listinsert_l操作結(jié)果:向單鏈表中插入元素;(3)listd
4、elete_l操作結(jié)果:刪除單鏈表中的元素;(4)printlist_l操作結(jié)果:遍歷單鏈表;(5)getelem_l操作結(jié)果:按位序查找單鏈表;(6)locateElem_l操作結(jié)果按值查找單鏈表;各函數(shù)間關(guān)系如下:main()linklist//單鏈表結(jié)構(gòu)scan()createlist_llistinsert_llistdelete_lprintlist_lgetelem_llocateElem_lcreatelist_l23.詳細(xì)設(shè)計實(shí)現(xiàn)概要設(shè)計中定義的所有的數(shù)據(jù)類型,對每個操作給出偽碼算法。對主程序和其他模塊也都需要寫出偽碼算法。單鏈表定義typedefs
5、tructlnode{intdata;structlnode*next;}lnode,*linklist;單鏈表的生成、插入、刪除、查找操作linklistcreatelist_l(intn){inti;linklistl,p;l=(linklist)malloc(sizeof(lnode));l->next=NULL;printf("pleaseinputthedataof:");for(i=n;i>0;--i){p=(linklist)malloc(sizeof(lnode));scanf("%d",&p->data);p->next=l->next;l->ne
6、xt=p;}returnl;}linklistcreatelist_l2(intn){inti;linklistl,p,r;l=(linklist)malloc(sizeof(lnode));l->next=NULL;r=l;printf("pleaseinputthedataof:");for(i=1;i<=n;i++){p=(linklist)malloc(sizeof(lnode));scanf("%d",&p->data);p->next=NULL;r->next=p;r=p;}returnl;}linklistlistinsert_l(linklistl,
7、inti,inte){intj;linklistp,s;p=l;j=0;while(p&&jnext;++j;}if(!p
8、
9、j>i-1)printf("dataisnotlefal!");s=(linklist)malloc(sizeof(lnode));s->data=e;s->next=p->next;p->next=s;returnl;}linklistlistdelete_l(linklistl,inti,int&e){intj;linklistp,q;p=l;j=0;while(p->next&&jnext