資源描述:
《C語言-線性表實驗報告.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、一.實驗名稱1.線性表基本操作;2.處理約瑟夫環(huán)問題?二.試驗目的:1.熟悉C語言的上機環(huán)境,掌握C語言的基本結構。2.定義單鏈表的結點類型。3.熟悉對單鏈表的一些基本操作和具體的函數(shù)定義。4.通過單鏈表的定義掌握線性表的鏈式存儲結構的特點。5.熟悉對單鏈表的一些其它操作。三.實驗內容1.編制一個演示單鏈表初始化、建立、遍歷、求長度、查詢、插入、刪除等操作的程序。?2.編制一個能求解除約瑟夫環(huán)問題答案的程序。?實驗一線性表表的基本操作問題描述:1.實現(xiàn)單鏈表的定義和基本操作。該程序包括單鏈表結構類型以及對單鏈表操作的具體的函數(shù)定義程序中的單鏈表
2、(帶頭結點)結點為結構類型,結點值為整型。/*定義DataType為int類型*/typedefintDataType;/*單鏈表的結點類型*/typedefstructLNode{DataTypedata;structLNode*next;}LNode,*LinkedList;LinkedListLinkedListInit()//初始化單鏈表voidLinkedListClear(LinkedListL)//清空單鏈表intLinkedListEmpty(LinkedListL)//檢查單鏈表是否為空voidLinkedListTraver
3、se(LinkedListL)//遍歷單鏈表intLinkedListLength(LinkedListL)//求單鏈表的長度/*從單鏈表表中查找元素*/LinkedListLinkedListGet(LinkedListL,inti)?/*從單鏈表表中查找與給定元素值相同的元素在鏈表中的位置*/intLinkedListLocate(LinkedListL,DataTypex)voidLinkedListInsert(LinkedListL,inti,DataTypex)//向單鏈表中插入元素/*從單鏈表中刪除元素*/voidLinkedLi
4、stDel(LinkedListL,DataTypex)/*用尾插法建立單鏈表*/LinkedListLinkedListCreat()2.約瑟夫環(huán)問題:任給正整數(shù)N和K,按下述方法可以得到1,2,…,n的一個置換,將數(shù)字1,2,…,n環(huán)形排列,按順時針方向自1開始報數(shù),報到K時輸出該位置上的數(shù)字,并使其出列。然后從他在順時針方向的下一個數(shù)字繼續(xù)報數(shù),如此下去,直到所有的數(shù)字全部出列為止。例如N=10,K=3,則正確的出列順序應為3,6,9,2,7,1,8,5,10,4。3.試單鏈表實現(xiàn)一個簡單的電子通訊本管理軟件,要求能查找聯(lián)系地址,增加和刪
5、除聯(lián)系人。聯(lián)系方式假定包括姓名、電話和地址?;疽螅?.上機前要做好準備工作,包括程序框圖、數(shù)據(jù)結構以及算法。2.按時實驗3.服從實驗室老師的安排4.獨立實驗,有問題可以討論,但不得翻版。5.遵守實驗室的各項紀律。四、概要設計?1.單鏈表的操作?(1)為了實現(xiàn)上述程序功能,需要定義單鏈表的抽象數(shù)據(jù)類型:?ADT?LinkedList?{? 數(shù)據(jù)對象:D={ai
6、ai∈struct?LNode?set,i=0,1,2,…,n,n≥0}? 數(shù)據(jù)關系:R={
7、ai,ai+1?∈D}? 基本操作:???LinkedListInit(
8、)???操作結果:構造了一個帶頭節(jié)點的空鏈表L;???LinkedListCreat()???初始條件:單鏈表L已存在;???操作結果:建立了一個帶頭節(jié)點的非空鏈表;?LinkedListClear(&L)???初始條件:單鏈表L已存在;???操作結果:將L重置為帶頭節(jié)點的空鏈表;???LinkedListEmpty(&L)???初始條件:單鏈表L已存在;???操作結果:如果鏈表L為空則返回1,鏈表L非空則返回0;???LinkedListLength(&L)?初始條件:單鏈表L已存在;?操作結果:返回單鏈表L中數(shù)據(jù)元素的個數(shù),若L為空表則返回
9、0;?LinkedListTraverse(&L)?初始條件:單鏈表L已存在;?操作結果:依次返回單鏈表L中各節(jié)點的元素值,若L為空表則顯示鏈表為空;?LinkedListGet(&L,i)?初始條件:單鏈表L已存在;?操作結果:顯示鏈表L中第i個節(jié)點個元素值,若鏈表L中沒有第i個節(jié)點則顯示查詢位置不正確;?LinkedListLocate(&L,x)?初始條件:單鏈表L已存在;?操作結果:顯示鏈表L中元素x的位置,若鏈表L中沒有元素x則顯示所查找元素不存在;?LinkedListInsert(&L,i,x)?初始條件:單鏈表L已存在;?操作結
10、果:在單鏈表L第i個節(jié)點后插入一個元素值為x的節(jié)點,L的長度加1,若單鏈表L中沒有第i個節(jié)點則顯示插入位置不正確;?LinkedListDel(&L,