資源描述:
《數(shù)據(jù)結構實驗報告三線性表的鏈式存儲》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、實驗報告三線性表的鏈式存儲班級:2010XXX姓名:HoogLe學號:2010XXXX專業(yè):XXXX2858505197@qq.com一、實驗目的:(1)掌握單鏈表的基本操作的實現(xiàn)方法。(2)掌握循環(huán)單鏈表的基本操作實現(xiàn)。(3)掌握兩有序鏈表的歸并操作算法。二、實驗內容:(請采用模板類及模板函數(shù)實現(xiàn))1、線性表鏈式存儲結構及基本操作算法實現(xiàn)[實現(xiàn)提示](同時可參見教材p64-p73頁的ADT描述及算法實現(xiàn)及ppt)函數(shù)、類名稱等可自定義,部分變量請加上學號后3位。也可自行對類中所定義的操作進行擴展。所加載的庫函數(shù)或常量定義:#includeusingnamespac
2、estd;(1)單鏈表存儲結構類的定義:templateclassLinkList{public:LinkList();//初始化帶頭結點空單鏈表構造函數(shù)實現(xiàn)LinkList(Ta[],intn);//利用數(shù)組初始化帶頭結點的單鏈表構造函數(shù)實現(xiàn)~LinkList();intlength();//求單鏈表表長算法Tget(inti);//獲得單鏈表中第i個結點的值算法intlocate(Ttemp);voidinsert(inti,Ttemp);//在帶頭結點單鏈表的第i個位置前插入元素e算法TDelete(inti);//在帶頭結點單鏈表中刪除第i個元素算法voidpr
3、int();//遍歷單鏈表元素算法boolisEmpty();//判單鏈表表空算法voiddeleleAll();//刪除鏈表中所有結點算法(這里不是析構函數(shù),但功能相同)private:Node*head;};(2)初始化帶頭結點空單鏈表構造函數(shù)實現(xiàn)輸入:無前置條件:無動作:初始化一個帶頭結點的空鏈表輸出:無后置條件:頭指針指向頭結點。//初始化帶頭結點空單鏈表構造函數(shù)實現(xiàn)templateLinkList::LinkList(){head=newNode;head->next=NULL;}(3)利用數(shù)組初始化帶頭結點的單鏈表構造函數(shù)實現(xiàn)輸入:已存儲數(shù)
4、據(jù)的數(shù)組及數(shù)組中元素的個數(shù)前置條件:無動作:利用頭插或尾插法創(chuàng)建帶頭結點的單鏈表輸出:無后置條件:頭指針指向頭結點,且數(shù)組中的元素為鏈表中各結點的數(shù)據(jù)成員。//利用數(shù)組初始化帶頭結點的單鏈表構造函數(shù)實現(xiàn)templateLinkList::LinkList(Ta[],intn){head=newNode;head->next=NULL;for(inti=0;i*s=newNode;s->data=a[i];s->next=head->next;head->next=s;}}(4)在帶頭結點單鏈表的第i個位置前插入元素e算法輸
5、入:插入位置i,待插入元素e前置條件:i的值要合法動作:在帶頭結點的單鏈表中第i個位置之前插入元素e輸出:無后置條件:單鏈表中增加了一個結點//在帶頭結點單鏈表的第i個位置前插入元素e算法templatevoidLinkList::insert(inti,Ttemp){Node*p=head;intcount=0;while(p&&countnext;count++;}if(p==NULL)cout<<"i不合法,越界!";else{Node*s=newNode;s->data=temp;s->next=p->next;p-
6、>next=s;}}(5)在帶頭結點單鏈表中刪除第i個元素算法輸入:刪除第i個結點,待存放刪除結點值變量e前置條件:單鏈表不空,i的值要合法動作:在帶頭結點的單鏈表中刪除第i個結點,并返回該結點的值(由e傳出)。輸出:無后置條件:單鏈表中減少了一個結點//在帶頭結點單鏈表中刪除第i個元素算法templateTLinkList::Delete(inti){Node*p=head;intcount=0;while(p&&countnext;count++;}if(p==NULL)cout<<"i不合法,越界!";else{Node*s
7、=p->next;Tx=s->data;p->next=s->next;returnx;}}(6)遍歷單鏈表元素算法輸入:無前置條件:單鏈表不空動作:遍歷輸出單鏈表中的各元素。輸出:無后置條件:無//遍歷單鏈表元素算法templatevoidLinkList::print(){Node*p=head->next;while(p){cout<data<<"";p=p->next;}cout<