



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、姓名:何俊林學(xué)號(hào): 201160072411軟件工程 1線性表的存儲(chǔ)結(jié)構(gòu)定義及基本操作(實(shí)驗(yàn)報(bào)告)一、 實(shí)驗(yàn)?zāi)康模? 掌握線性表的邏輯特征. 掌握線性表順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn),熟練掌握順序表的基本運(yùn)算. 熟練掌握線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)定義及基本操作. 理解循環(huán)鏈表和雙鏈表的特點(diǎn)和基本運(yùn)算. 加深對(duì)順序存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的理解和鏈?zhǔn)酱鎯?chǔ)數(shù)據(jù)結(jié)構(gòu)的理解,逐步培養(yǎng)解決實(shí)際問(wèn)題的編程能力二、 實(shí)驗(yàn)內(nèi)容(一) 基本實(shí)驗(yàn)內(nèi)容 (順序表 ):建立順序表 ,完成順序表的基本操作:初始化、插入、刪除、逆轉(zhuǎn)、輸出、銷(xiāo)毀,置空表、求表長(zhǎng)、查找元素、判線性表是否為空;1. 問(wèn)題描述:. 利用順序表 ,設(shè)計(jì)一組輸入數(shù)據(jù)( 假定為一
2、組整數(shù) ), 能夠?qū)樞虮磉M(jìn)行如下操作:. 創(chuàng)建一個(gè)新的順序表,實(shí)現(xiàn)動(dòng)態(tài)空間分配的初始化;. 根據(jù)順序表結(jié)點(diǎn)的位置插入一個(gè)新結(jié)點(diǎn) ( 位置插入 ), 也可以根據(jù)給定的值進(jìn)行插入 ( 值插入 ), 形成有序順序表 ;. 根據(jù)順序表結(jié)點(diǎn)的位置刪除一個(gè)結(jié)點(diǎn) ( 位置刪除 ),也可以根據(jù)給定的值刪除對(duì)應(yīng)的第一個(gè)結(jié)點(diǎn) ,或者刪除指定值的所有結(jié)點(diǎn) (值刪除 );. 利用最少的空間實(shí)現(xiàn)順序表元素的逆轉(zhuǎn);. 實(shí)現(xiàn)順序表的各個(gè)元素的輸出;. 徹底銷(xiāo)毀順序線性表,回收所分配的空間;. 對(duì)順序線性表的所有元素刪除,置為空表 ;. 返回其數(shù)據(jù)元素個(gè)數(shù);. 按序號(hào)查找 ,根據(jù)順序表的特點(diǎn) ,可以隨機(jī)存取 ,直接可以定位
3、于第 i 個(gè)結(jié)點(diǎn) ,查找該元素的值 ,對(duì)查找結(jié)果進(jìn)行返回 ;. 按值查找 ,根據(jù)給定數(shù)據(jù)元素的值,只能順序比較 ,查找該元素的位置,對(duì)查找結(jié)果進(jìn)行返回 ;. 判斷順序表中是否有元素存在,對(duì)判斷結(jié)果進(jìn)行返回;. 編寫(xiě)主程序 ,實(shí)現(xiàn)對(duì)各不同的算法調(diào)用。2. 實(shí)現(xiàn)要求對(duì)順序表的各項(xiàng)操作一定要編寫(xiě)成為C(C+) 語(yǔ)言函數(shù) ,組合成模塊化的形式,每個(gè)算法的實(shí)現(xiàn)要從時(shí)間復(fù)雜度和空間復(fù)雜度上進(jìn)行評(píng)價(jià);. “初始化算法”的操作結(jié)果:構(gòu)造一個(gè)空的順序線性表。對(duì)順序表的空間進(jìn)行動(dòng)態(tài)管理,實(shí)現(xiàn)動(dòng)態(tài)分配、回收和增加存儲(chǔ)空間 ;. “位置插入算法”的初始條件:順序線性表L 已存在 ,給定的元素位置為i, 且 1iLis
4、tLength(L)+1; 操作結(jié)果:在 L 中第 i 個(gè)位置之前插入新的數(shù)據(jù)元素e,L的長(zhǎng)度加 1;. “位置刪除算法”的初始條件:順序線性表L 已存在 ,1 iListLength(L);操作結(jié)果:刪除 L 的第 i 個(gè)數(shù)據(jù)元素 ,并用 e 返回其值 ,L 的長(zhǎng)度減 1;. “逆轉(zhuǎn)算法”的初始條件:順序線性表L已存在 ;. 操作結(jié)果:依次對(duì) L 的每個(gè)數(shù)據(jù)元素進(jìn)行交換 ,為了使用最少的額外空間,對(duì)順序表的元素進(jìn)行交換 ;. “輸出算法”的初始條件:順序線性表L 已存在 ; 操作結(jié)果:依次對(duì)L 的每個(gè)數(shù)據(jù)元素進(jìn)行輸出 ;. “銷(xiāo)毀算法”初始條件:順序線性表L 已存在 ;操作結(jié)果:銷(xiāo)毀順序線性
5、表L;. “置空表算法”初始條件:順序線性表L 已存在 ; 操作結(jié)果:將 L 重置為空表 ;. “求表長(zhǎng)算法”初始條件:順序線性表L 已存在 ; 操作結(jié)果:返回L 中數(shù)據(jù)元素個(gè)數(shù) ;. “按序號(hào)查找算法”初始條件:順序線性表L 已存在 ,元素位置為 i, 且 1 iListLength(L) 操作結(jié)果:返回 L 中第 i個(gè)數(shù)據(jù)元素的值. “按值查找算法”初始條件:順序線性表L 已存在 ,元素值為 e; 操作結(jié)果:返回 L 中數(shù)據(jù)元素值為 e 的元素位置 ;. “判表空算法”初始條件:順序線性表L 已存在 ;. 操作結(jié)果:若L 為空表 ,則返回 TRUE,否則返回FALSE;分析:修改輸入數(shù)據(jù),
6、預(yù)期輸出并驗(yàn)證輸出的結(jié)果,加深對(duì)有關(guān)算法的理解。(二) 基本實(shí)驗(yàn)內(nèi)容 (單鏈表 ):建立單鏈表 ,完成鏈表 ( 帶表頭結(jié)點(diǎn) )的基本操作:建立鏈表、插入、刪除、查找、輸出、求前驅(qū)、求后繼、兩個(gè)有序鏈表的合并操作。其他基本操作還有銷(xiāo)毀鏈表、將鏈表置為空表、求鏈表的長(zhǎng)度、獲取某位置結(jié)點(diǎn)的內(nèi)容、搜索結(jié)點(diǎn)。1. 問(wèn)題描述:利用線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) ,設(shè)計(jì)一組輸入數(shù)據(jù) (假定為一組整數(shù) ),能夠?qū)捂湵磉M(jìn)行如下操作:.初始化一個(gè)帶表頭結(jié)點(diǎn)的空鏈表;. 創(chuàng)建一個(gè)單鏈表是從無(wú)到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地輸入各結(jié)點(diǎn)數(shù)據(jù)起前后相互鏈接的關(guān)系。又分為逆位序(插在表頭 )輸入 n 個(gè)元素的值和正位序尾) 輸入
7、 n 個(gè)元素的值 ;,并建立( 插在表. 插入結(jié)點(diǎn)可以根據(jù)給定位置進(jìn)行插入 ( 位置插入 ),也可以根據(jù)結(jié)點(diǎn)的值插入到已知的鏈表中 (值插入 ), 且保持結(jié)點(diǎn)的數(shù)據(jù)按原來(lái)的遞增次序排列 ,形成有序鏈表。. 刪除結(jié)點(diǎn)可以根據(jù)給定位置進(jìn)行刪除( 位置刪除 ),也可以把鏈表中查找結(jié)點(diǎn)的值為搜索對(duì)象的結(jié)點(diǎn)全部刪除( 值刪除 );. 輸出單鏈表的內(nèi)容是將鏈表中各結(jié)點(diǎn)的數(shù)據(jù)依次顯示,直到鏈表尾結(jié)點(diǎn) ;. 編寫(xiě)主程序 ,實(shí)現(xiàn)對(duì)各不同的算法調(diào)用。其它的操作算法描述略。2. 實(shí)現(xiàn)要求:對(duì)鏈表的各項(xiàng)操作一定要編寫(xiě)成為C(C+)語(yǔ)言函數(shù) ,組合成模塊化的形式,還要針對(duì)每個(gè)算法的 實(shí)現(xiàn)從時(shí)間復(fù)雜度和空間復(fù)雜度上進(jìn)行評(píng)
8、價(jià)。. “初始化算法”的操作結(jié)果:構(gòu)造一個(gè)空的線性表L, 產(chǎn)生頭結(jié)點(diǎn) ,并使 L 指向此頭結(jié)點(diǎn);. “建立鏈表算法”初始條件:空鏈存在; 操作結(jié)果:選擇逆位序或正位序的方法,建立一個(gè)單鏈表 ,并且返回完成的結(jié)果 ;. “鏈表 ( 位置 )插入算法”初始條件:已知單鏈表L 存在 ; 操作結(jié)果:在帶頭結(jié)點(diǎn)的單鏈線性表 L 中第 i 個(gè)位置之前插入元素e;. “鏈表 ( 位置 )刪除算法”初始條件:已知單鏈表L 存在;. 操作結(jié)果:在帶頭結(jié)點(diǎn)的單鏈線性表L 中 ,刪除第 i 個(gè)元素 ,并由 e 返回其值 ;. “輸出算法”初始條件:鏈表L 已存在 ;操作結(jié)果:依次輸出鏈表的各個(gè)結(jié)點(diǎn)的值;( 三) 擴(kuò)
9、展實(shí)驗(yàn)內(nèi)容 (順序表 )查前驅(qū)元素、查后繼元素、順序表合并等.1. 問(wèn)題描述:. 根據(jù)給定元素的值 ,求出前驅(qū)元素 ;. 根據(jù)給定元素的值 ,求出后繼元素 ;. 對(duì)已建好的兩個(gè)順序表進(jìn)行合并操作,若原線性表中元素非遞減有序排列,要求合并后的結(jié)果還是有序 (有序合并 ); 對(duì)于原順序表中元素?zé)o序排列的合并只是完成A=A B (無(wú)序合并 ), 要求同樣的數(shù)據(jù)元素只出現(xiàn)一次。. 修改主程序 ,實(shí)現(xiàn)對(duì)各不同的算法調(diào)用。2. 實(shí)現(xiàn)要求:. “查前驅(qū)元素算法”初始條件:順序線性表L 已存在 ;操作結(jié)果:若數(shù)據(jù)元素存在且不是第一個(gè) ,則返回前驅(qū) ,否則操作失敗 ;. “查后繼元素算法”初始條件:順序線性表L
10、 已存在 ;操作結(jié)果:若數(shù)據(jù)元素存在且不是最后一個(gè) ,則返回后繼 ,否則操作失敗 ;. “無(wú)序合并算法”的初始條件:已知線性表La 和 Lb;. 操作結(jié)果:將所有在線性表Lb 中但不在 La 中的數(shù)據(jù)元素插入到 La 中 ;. “有序合并算法”的初始條件:已知線性表La 和 Lb 中的數(shù)據(jù)元素按值非遞減排列;操作結(jié)果:歸并 La 和 Lb 得到新的線性表Lc,Lc 的數(shù)據(jù)元素也按值非遞減排列;(四) 擴(kuò)展實(shí)驗(yàn)內(nèi)容 (鏈表 )1. 問(wèn)題描述:. 求前驅(qū)結(jié)點(diǎn)是根據(jù)給定結(jié)點(diǎn)的值,在單鏈表中搜索其當(dāng)前結(jié)點(diǎn)的后繼結(jié)點(diǎn)值為給定的值,將當(dāng)前結(jié)點(diǎn)返回 ;. 求后繼結(jié)點(diǎn)是根據(jù)給定結(jié)點(diǎn)的值,在單鏈表中搜索其當(dāng)前結(jié)
11、點(diǎn)的值為給定的值,將后繼結(jié)點(diǎn)返回 ;. 兩個(gè)有序鏈表的合并是分別將兩個(gè)單鏈表的結(jié)點(diǎn)依次插入到第3 個(gè)單鏈表中 ,繼續(xù)保持結(jié)點(diǎn)有序 ;2. 實(shí)現(xiàn)要求:. “求前驅(qū)算法”初始條件:線性表L 已存在 ;. 操作結(jié)果:若cur_e 是 L 的數(shù)據(jù)元素 ,且不是第一個(gè) ,則用 pre_e 返回它的前驅(qū) ;. “求后繼算法”初始條件:線性表L 已存在 ;. 操作結(jié)果:若cur_e 是 L 的數(shù)據(jù)元素 ,且不是最后一個(gè) ,則用 next_e 返回它的后繼 ;. “兩個(gè)有序鏈表的合并算法”初始條件:線性表單鏈線性表La 和 Lb 的元素按值非遞減排列 ; 操作結(jié)果:歸并La 和 Lb 得到新的單鏈表。三、 實(shí)
12、驗(yàn)環(huán)境和實(shí)驗(yàn)步驟實(shí)驗(yàn)環(huán)境:利用CodeBlocks10.05 集成開(kāi)發(fā)環(huán)境進(jìn)行本實(shí)驗(yàn)的操作。實(shí)驗(yàn)步驟順序表的定義與操作:1. 啟動(dòng) CodeBlocks10.5;2. 按“ Create a new project ”, 通過(guò)” file”, 按“ C/C+ source ”,選擇” c”,然后 GO.儲(chǔ)存文件“ D:c 語(yǔ)言 順序表 .c “,3. 進(jìn)行編代碼。4、編好之后,搞ctrl+shift+F9進(jìn)行編譯。然后按ctrl+F10.5. 如果編譯出問(wèn)題,然后進(jìn)行調(diào)試。實(shí)驗(yàn)步驟鏈表的定義與操作:1. 啟動(dòng) CodeBlocks10.5;2. 按“ Create a new project
13、”, 通過(guò)” file”, 按“ C/C+ source ”,選擇” c”,然后 GO.儲(chǔ)存文件“ D:c 語(yǔ)言 單鏈表 .c “,3. 進(jìn)行編代碼。4、編好之后,搞ctrl+shift+F9進(jìn)行編譯。然后按ctrl+F10.5. 如果編譯出問(wèn)題,然后進(jìn)行調(diào)試。四、 實(shí)驗(yàn)分析順序表代碼如下:#include #include stdlib.h#include #define LIST_INIT_SIZE 100#define ok 1#define ERROR 0#define OVERFLOW -1#define Num 3typedef int DataType;typedef int S
14、tatus;typedef structDataType *elem;int Length;int Listsize;SeqList;SeqList L;Status InitSeqList(SeqList *L)L-elem=(DataType*)malloc(LIST_INIT_SIZE*sizeof(DataType);if(!L-elem)exit(OVERFLOW);L-Length=0;L-Listsize=LIST_INIT_SIZE;return ok;Status InsertSeqList(SeqList *L,int i,DataType e)DataType *q,*p
15、;if(iL-Length+1)return ERROR;elseif(L-Length=L-Listsize)printf(TheSeqList is full!);return ERROR;elseq=L-elem+i-1;for(p=L-elem+L-Length-1;p=q;-p)*(p+1)=*p;*q=e;+L-Length;return ok;int DeleteSeqList(SeqList *L,int i)int j;if(iL-Length)printf(the i number is not exist!);return ERROR;elsefor(j=i-1;jLen
16、gth;j+)*(L-elem+j)=*(L-elem+j+1);L-Length-;return ok;/void SearchSeqList(SeqList *L, DataType x)void SearchSeqList(SeqList *L,int x)int j=0;while (jLength&*(L-elem+j)!=x)j+;if(jL-Length)printf(error);elseprintf(運(yùn)行結(jié)果 );printf(%d,j+1);void PrintfSeqList(SeqList *L)Printf( 運(yùn)行結(jié)果 :);int i;for (i=0;iLengt
17、h;i+)printf(%d,*(L-elem+i);void LenSeqList(SeqList *L)int i=0,*j;for(j=L-elem;iLength;j+)i+;printf(n元素個(gè)數(shù)為: %d,i);void PriorSeqLement(SeqList *L,int i)int *j;if(iL-Length)printf(輸入有誤 );else if(i=1)printf(無(wú)前驅(qū) );else j=L-elem+i-2;printf(運(yùn)行結(jié)果: );printf(%d,*j);Status NextSeqElement(SeqList *L,int i)int*j
18、;if(iLength)printf(輸入有誤 );else if(i=1)printf(無(wú)后繼 );else j=L-elem+i;printf(運(yùn)行結(jié)果: );printf(%d,*j);return ok;void ListSeqEmpty(SeqList *L)if(L-Length=0)printf(書(shū)序表為空 );else printf(順序表非空 );Status ChangSeqList(SeqList *L)int i,j,q;for(i=0,j=L-Length-1;iLength/2;i+,j-)q=*(L-elem+i);*(L-elem+i)=*(L-elem+j);
19、*(L-elem+j)+q;return ok;Status ClearSeqList(SeqList *L)L-Length=0;return ok;void DestorySeqList(SeqList *L)free(L);L-Length=0;L-Listsize=0;void main()SeqList *LA=&L;int i,e,j,x,k,m,*p,q=0;InitSeqList(&L);printf(輸入元素: );for(p=LA-elem;qLength+;PrintfSeqList(&L);printf(n輸入要插入元素的位置和元素:);scanf(%d,%d,&i,&
20、e);InsertSeqList(LA,i,e);PrintfSeqList(&L);printf(n輸入要?jiǎng)h除元素的位置:);scanf(%d,&j);DeleteSeqList(&L,j);PrintfSeqList(&L);printf(n輸入要查找的值:);scanf(%d,&x);SearchSeqList(&L,x);PrintfSeqList(&L);printf(n輸入元素求其前驅(qū):);scanf(%d,&k);PriorSeqList(&L,k);PrintfSeqList(&L);printf(n輸入元素求其后繼:);scanf(%d,&m);NextSeqList(&L,
21、m);printf(n求表長(zhǎng): );LenSeqList(&L);/判斷表是否為空printf(n判斷表是否為空:n);ListSeqEmpty(&L);printf(n);printf( 逆轉(zhuǎn) :n);ChangSeqList(&L);PrintfSeqList(&L);printf(n);printf( 置空表 :n);ClearSeqList(&L);printf(n);printf( 銷(xiāo)毀: );DestorySeqList(&L);單鏈表代碼:/ List.h#include using namespace std;typedef int ElemType ;typedef stru
22、ct studentElemType n;struct student *next;Student,*SListLink;class SListpublic:SList();/建立一個(gè)空鏈表 *void CreateSList();/建立鏈表 *void ClearSList();/將鏈表重置為空鏈表 *ElemType SListLength();/返回鏈表中的長(zhǎng)度 *bool SListEmpty();/判斷鏈表是否為空鏈表 *ElemType GetElem();/返回鏈表的一個(gè)元素 *void SortElem();/對(duì)鏈表排序void SListInsert();/插入一個(gè)元素 *v
23、oid SListDelete();/刪除一個(gè)元素 *bool SlistDeleteSame();/刪除相同的元素void ShowSList();/顯示一個(gè)鏈表 *void FileSave();/寫(xiě)入文件void FileRead();/從文件打開(kāi)void FileDelete();/從文件刪除void FileCheck();/查看文件內(nèi)容SList();/銷(xiāo)毀鏈表private:SListLink head;SListLink p;SListLink q;SListLink temp;int slistlength;SList:SList()/建立一個(gè)空鏈表head=p=q=temp
24、=NULL;slistlength=0;void SList:CreateSList()/建立鏈表if (head=NULL)ElemType m;cout請(qǐng)輸入一個(gè)數(shù)字:(0, 負(fù)數(shù)表示結(jié)束輸入)m;if (m0)head=q=p=temp=new Student;q-n=m;+slistlength;while (m!=0&m=0)cout請(qǐng)輸入一個(gè)數(shù)字:m;if (m!=0&m=0)p=new Student;p-n=m;+slistlength;q-next=p;q=p;p-next=NULL;cout鏈表創(chuàng)建成功 endl;/沒(méi)有輸出?elsehead=p=q=NULL;elseco
25、ut你已經(jīng)創(chuàng)建過(guò)新鏈表了endl;int SList:SListLength()/返回鏈表中的長(zhǎng)度cout鏈表中的元素個(gè)數(shù)是:slistlengthendl;return slistlength;ElemType SList:GetElem()/返回鏈表對(duì)應(yīng)序號(hào)的一個(gè)元素if (head!=NULL)ElemType m;cout請(qǐng)輸入要返回的數(shù)在鏈表中的序號(hào)m;if (m=0)if (slistlength=m)int indx=1;p=head;while(1)if (m=indx)cout鏈表返回你查找的數(shù):nn;p=p-next;+indx;if (m=indx)cout鏈表返回你查找
26、的數(shù):nn;elsecout序號(hào)超出鏈表范圍endl;return -1;elsecout不允許非法輸入 endl;return -1;elsecout此鏈表是空鏈表 endl;return -1;bool SList:SListEmpty()/判斷鏈表是否為空鏈表if (head!=NULL)cout此鏈表不是空鏈表endl;return false;elsecout此鏈表是空鏈表 endl;return true;bool SList:SlistDeleteSame()/刪除鏈表中相同元素ElemType m;cout刪除鏈表中相同元素的節(jié)點(diǎn),請(qǐng)輸入一個(gè)要?jiǎng)h除的數(shù):m;if (m=0)if
27、 (head!=NULL)return true;elsecout這是一個(gè)空鏈表 endl;return false;elsecout不允許非法輸入 next)temp=p;for (q=p-next;q!=NULL;q=q-next)if (q-n=temp-n)temp=q;if (temp!=p)ElemType t=p-n;p-n=temp-n;temp-n=t;cout排序成功 endl;elsecout此鏈表是空鏈表 ,不能進(jìn)行此操作next=NULL)delete head;head=NULL;elsep=head-next;while (q!=NULL&p!=NULL)q=p-
28、next;head-next=q;delete p;p=q;q=p-next;delete head;head=NULL;slistlength=0;cout重置鏈表成功 endl;elsecout此鏈表是空鏈表 endl;void SList:ShowSList()/顯示一個(gè)鏈表if (head!=NULL)p=head;cout顯示鏈表所有元素:docoutnnext; while (p!=NULL);endl;cout此鏈表共有元素:slistlength個(gè)endl;elsecout此鏈表是空鏈表endl;void SList:SListInsert()/頭插法插入一個(gè)元素ElemTyp
29、e m;cout請(qǐng)輸入要插入的數(shù)字:m;if (m0)if (head!=NULL)p=new Student;p-n=m;+slistlength;p-next=head;head=p;elsehead=new Student;head-n=m;+slistlength;head-next=NULL;cout插入數(shù)據(jù)成功 endl;return;void SList:SListDelete()/刪除一個(gè)元素ElemType m;bool flig=true;cout請(qǐng)輸入要?jiǎng)h除的數(shù)字:m;if (m0)if (head!=NULL)if (head-n=m)/頭結(jié)點(diǎn)指向的值符合刪除要求if
30、(head-next=NULL)/delete head;head=NULL;-slistlength;刪除頭結(jié)點(diǎn),且頭結(jié)點(diǎn)沒(méi)有后繼元素時(shí)coutreturn;刪除數(shù)據(jù)成功 next;head-next=NULL;delete head;head=NULL;-slistlength;head=p;cout刪除數(shù)據(jù)成功 n=m)if (p-next=NULL)/要?jiǎng)h除的是鏈表的最后一個(gè)元素q=head;while (q-next-next!=NULL)/尋找出倒數(shù)第二個(gè)節(jié)點(diǎn)q=q-next;q-next=NULL;delete p;p=NULL;-slistlength;cout刪除數(shù)據(jù)成功 n
31、ext-n!=m)q=q-next;q-next=p-next;p-next=NULL;delete p;p=NULL;-slistlength;cout刪除數(shù)據(jù)成功 next;while (p!=NULL);if (flig)cout你輸入的數(shù)據(jù)鏈表中不存在endl;return;elsecout此鏈表是空鏈表,不能進(jìn)行此操作endl;return;void SList:FileSave()ofstream out;out.open( 單向鏈表練習(xí) .txt);if (!out.is_open()cerr打開(kāi)文件出錯(cuò) endl;return;elseif (head=NULL)cerr鏈表為
32、空無(wú)數(shù)據(jù)可以保存endl;elsep=head;dooutnnext; while (p!=NULL);cout文件保存成功 endl;out.close();void SList:FileRead()ifstream in;in.open( 單向鏈表練習(xí) .txt);if (!in.is_open()cerr打開(kāi)文件出錯(cuò) endl;return;elseif (head!=NULL)cout鏈表不為空,不能進(jìn)行此操作n1).eof()delete p;temp-next=NULL;break;q-n=n1;+slistlength;p=new Student;q-next=p;temp=q;
33、q=p;cout文件讀取成功 endl;in.close();void SList:FileDelete()ifstream in;in.open( 單向鏈表練習(xí) .txt);if (!in.is_open()cerr文件不存在 endl;return;in.close();char a=del單向鏈表練習(xí) .txt;ElemType choice;docout確認(rèn)要?jiǎng)h除文件嗎?1= 是 0= 否 choice;system(cls); while (choice!=1&choice!=0); switch (choice)case 1: system(a);cout成功刪除文件 endl;b
34、reak;case 0:cout放棄刪除文件 endl;break;void SList:FileCheck()ifstream in;in.open( 單向鏈表練習(xí) .txt);if (!in.is_open()cerr文件查看出錯(cuò),請(qǐng)檢查文件是否存在;return;ElemType n1;cout單向鏈表練習(xí) .txt文件內(nèi)容 :n1).eof()break;coutn1endl;SList:SList()/刪銷(xiāo)毀一個(gè)鏈表cout感謝使用 endl;void main_menu(ElemType &choice)bool judge=true;dosystem(cls);coutnttt鏈
35、表練習(xí) -C+ 語(yǔ)言實(shí)現(xiàn) endl;coutntt1.創(chuàng)建一個(gè)鏈表 n;couttt2.將鏈表置空 n;couttt3.返回鏈表長(zhǎng)度 n;couttt4.判斷鏈表是否為空鏈表 n;couttt5.返回鏈表的一個(gè)元素 n;couttt6.為鏈表插入一個(gè)元素 n;couttt7.為鏈表刪除一個(gè)元素 n;couttt8.顯示一個(gè)鏈表 n;couttt9.對(duì)鏈表進(jìn)行排序 n;couttt10.將鏈表保存為文件 n;couttt11.從文件中打開(kāi)鏈表 n;couttt12.刪除文件及信息 n;couttt13.查看文件信息 n;couttt0.退出 nendl;coutchoice;for (int i=0;i!=14;+i)if (choice=i)judge=false; while (judge);/main.cpp#include #include List.husing namespac
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保潔與員工合同范本
- 住宅加裝電梯工程合同范例
- 出售尼龍水箱合同范本
- 與政府合作合同范本
- 內(nèi)控合同范本
- 協(xié)商撤銷(xiāo)合同范例
- 勞動(dòng)合同范本 病假
- 單位租住房合同范本
- 個(gè)人蓋房合同范本
- 中醫(yī)醫(yī)聯(lián)體合同范本
- PPT用中國(guó)地圖(可編輯)
- 基于德育的農(nóng)村中小學(xué)校園欺凌現(xiàn)象的解決對(duì)策優(yōu)秀獲獎(jiǎng)科研論文
- 鐵路工程概預(yù)算-工程經(jīng)濟(jì)管理培訓(xùn)-課件
- 小學(xué)英語(yǔ)一般現(xiàn)在時(shí)-(演示)課件
- 面部激素依賴(lài)性皮炎的管理課件
- 盧卡奇教學(xué)講解課件
- 智慧環(huán)衛(wèi)項(xiàng)目建設(shè)方案
- 焊接作業(yè)現(xiàn)場(chǎng)環(huán)境溫度濕度記錄
- 長(zhǎng)期護(hù)理保險(xiǎn)待遇資格申請(qǐng)表
- 馬克思主義基本原理教案:第一章+教案
- 【腳手架計(jì)算書(shū)】 腳手架計(jì)算書(shū)詳細(xì)步驟
評(píng)論
0/150
提交評(píng)論