




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單鏈表:typedef struct char num20; char name50; float pri; Book;typedef struct LNode /線性表的單鏈表存儲 Book book; /數(shù)據(jù)域struct LNode *next; /指針域LNode,*LinkList;void Input(LinkList &L) /前插法創(chuàng)建圖書鏈表 LinkList p; L=new LNode; L->next=NULL;/初始化單鏈表 ifstream inFile("book.txt"); if(!inFile)cerr<<&qu
2、ot;Cannot open this file!"<<endl;exit(1); char book_head110,book_head210,book_head310; /定義文件中標題 inFile>>book_head1>>book_head2>>book_head3;/讀取文件中的標題 while(!inFile.eof()/到達文件尾部前逐行依次讀取所有圖書數(shù)據(jù) p=new LNode; /生成新結(jié)點 inFile>>p->book.num>>p->>>p-&
3、gt;book.pri; p->next=L->next; /插入到表頭 L->next=p;h inFile.close(); cout<<"讀取完畢!"<<endl;void Output(LinkList &L)/輸出 LinkList p; p=L->next; while(p) cout<<left<<setw(15)<<p->book.num<<"t"<<left<<setw(50)<<p->
4、<<"t"<<left<<setw(5)<<p->book.pri<<endl; p=p->next; cout<<"n信息顯示完畢n"<<endl;void Searchname(LinkList &L) LinkList p; p=L->next; char name120; cout<<"請輸入要查找的書名:" cin>>name1; while(p) if(strcmp(nam
5、e1,p->)=0) cout<<left<<setw(15)<<p->book.num<<"t"<<left<<setw(50)<<p-><<"t"<<left<<setw(5)<<p->book.pri<<endl; p=p->next; void Searchnum(LinkList &L) int i; int j=0; LinkL
6、ist p; p=L->next; /p指向第一個結(jié)點 cout<<"請輸入要查找的書籍的位置" cin>>i; while(p&&j<i-1) /順著鏈表向后掃描,直到p指向第i個元素或p為空 j+;p=p->next; if(!p|j>i) /第i個元素不存在 cout<<"錯誤!"<<endl; cout<<"第"<<i<<"本書信息如下:"<<endl; cout<&
7、lt;left<<setw(15)<<p->book.num<<"t"<<left<<setw(50)<<p-><<"t"<<left<<setw(5)<<p->book.pri<<endl; void Max(LinkList &L) LinkList pmax,p; pmax=L->next; p=L->next->next; while(p) if(p-&g
8、t;book.pri>pmax->book.pri)pmax=p; p=p->next; cout<<left<<setw(15)<<pmax->book.num<<"t"<<left<<setw(50)<<pmax-><<"t"<<left<<setw(5)<<pmax->book.pri<<endl;void Sort(LinkList L)cout<
9、;<"此功能還未實現(xiàn),研究中"<<endl;void Inverse(LinkList &L)LinkList p; /待插入到鏈表的節(jié)點LinkList q; p = L->next; L->next = NULL; /初始化鏈表 ofstream outFile("bookinverse.txt");/每一次將p插入到L(頭結(jié)點)與L->next(鏈表的第一個結(jié)點之間) while (p) q = p->next; p->next = L->next; L->next = p; p
10、= q; p=L->next;/循環(huán)完后,p指向的是鏈表末尾,需要重置回首元結(jié)點,否則無法寫入文件 while(p) cout<<setw(15)<<p->book.num<<"t"<<setw(50)<<p-><<"t"<<setw(5)<<p->book.pri<<endl; outFile<<left<<setw(15)<<p->book.num<<
11、;"t"<<left<<setw(50)<<p-><<"t"<<left<<setw(5)<<p->book.pri<<endl; p=p->next; cout<<"信息已寫入bookinverse.txt中!"<<endl;void Count(LinkList L) int i=0; LinkList p; p=L->next; while(p) i+; p=p->
12、;next; cout<<"當前的圖書總數(shù)為:"<<i<<endl;void Insert(LinkList L) Book bk; LinkList p=L; /初始化 LinkList s=new LNode; /新結(jié)點s int i; int j=0; cout<<"請輸入待插入書籍的位置"<<endl; cin>>i; cout<<"請輸入待插入的書籍的信息"<<endl; cout<<"書號: "&
13、lt;<endl; cin>>bk.num; cout<<"書名: "<<endl; cin>>; cout<<"價格: "<<endl; cin>>bk.pri; while(p&&j<i-1) /尋找第i-1個結(jié)點 j+; p=p->next; if(!p|j>i-1) cout<<"錯誤!"<<endl; s->book=bk; /將結(jié)點s的數(shù)據(jù)域置為bk s-&
14、gt;next=p->next; /將結(jié)點s插入L中 p->next=s; /重新寫入book.txt文件 ofstream outFile("book.txt"); p=L->next; while(p) outFile<<left<<setw(15)<<p->book.num<<"t"<<left<<setw(50)<<p-><<"t"<<left<<setw(5)
15、<<p->book.pri<<endl; p=p->next; cout<<"插入新的書籍后的書籍信息已重新寫入book.txt文件"<<endl;void Delete(LinkList L) Book bk1; LinkList p=L; /初始化 LinkList q; /臨時保存被刪除結(jié)點的地址以備釋放 int i; int j=0; cout<<"請輸入待刪除書籍的位置"<<endl; cin>>i; while(p->next&&am
16、p;j<i-1) j+; p=p->next; if(!(p->next)|j>i-1) cout<<"錯誤!"<<endl; q=p->next; p->next=q->next; bk1=q->book; delete q; /重新寫入book.txt文件 ofstream outFile("book.txt"); p=L->next; while(p) outFile<<left<<setw(15)<<p->book.num<
17、;<"t"<<left<<setw(50)<<p-><<"t"<<left<<setw(5)<<p->book.pri<<endl; p=p->next; cout<<"刪除所選書籍后的書籍信息已重新寫入book.txt文件"<<endl;順序表typedef struct Book *book; int length;/圖書表的圖書記錄個數(shù)SqList;void Input
18、(SqList &L) int i=0;char book_head110,book_head210,book_head310; /定義文件中標題 L.book=new BookMAXSIZE; ifstream inFile("book.txt"); /打開文件if(!inFile)cerr<<"Cannot open this file!"<<endl;exit(1);inFile>>book_head1>>book_head2>>book_head3;/讀取文件中的標題L.leng
19、th=0;while(!inFile.eof() /逐行依次讀取所有圖書數(shù)據(jù)inFile>>L.booki.num >>L.>>L.booki.pri;i+; /記錄圖書個數(shù) L.length=i;inFile.close();cout<<"n讀取 book.txt 信息完畢!"<<endl;void Output(SqList L) for(int i=0;i<L.length;i+)cout<<left<<setw(15)<<L.booki.num&
20、lt;<"t"<<left<<setw(50)<<L.<<"t"<<left<<setw(5)<<L.booki.pri<<endl;cout<<"n信息顯示完畢n"<<endl;void Searchname(SqList &L) int y; char name120; cout<<"請輸入要查找的書名:" cin>>name1; fo
21、r(y=0;y<L.length;y+)/比較輸入的name1與結(jié)構(gòu)體數(shù)組中name是否相同; if(strcmp(name1,L.)=0) cout<<left<<setw(15)<<L.booky.num<<"t"<<left<<setw(50)<<L.<<"t"<<left<<setw(5)<<L.booky.pri<<endl; break; void Sea
22、rchnum(SqList &L) int i; cout<<"請輸入要查找的書的位置"<<endl; cin>>i; cout<<left<<setw(15)<<L.booki-1.num<<left<<setw(50)<<L.<<left<<setw(5)<<L.booki-1.pri<<endl;void Max(SqList L)int max=0;cout<<&quo
23、t;價格最高的書是:"<<endl;cout<<"書號"<<"t"<<"書名"<<"t"<<"價格"<<endl;for (int i=0;i<L.length;i+)if(L.booki.pri>L.bookmax.pri)max=i;cout<<left<<setw(15)<<L.bookmax.num<<"t"<
24、<left<<setw(50)<<L.<<"t"<<left<<setw(5)<<L.bookmax.pri<<endl;for (int j=0;j<L.length-1;j+)if(j!=max)if(L.bookj.pri=L.bookmax.pri)cout<<left<<setw(15)<<L.bookj.num<<"t"<<left<<setw(50)&
25、lt;<L.<<"t"<<left<<setw(5)<<L.bookj.pri<<endl;cout<<endl;void Sort(SqList L) /冒泡排序 Book book1; /重新定義一個結(jié)構(gòu)體變量 for(int m=0;m<L.length-1;m+) for(int n=0;n<L.length-m-1;n+)if(L.bookn.pri<L.bookn+1.pri) /交換結(jié)構(gòu)體數(shù)組的值book1=L.bookn;L.bookn=L.b
26、ookn+1;L.bookn+1=book1; /寫入booksort.txt文件 ofstream outFile("booksort.txt",ios:out); for(m=0;m<L.length-1;m+) outFile<<left<<setw(15)<<L.bookm.num<<"t"<<left<<setw(50)<<L.<<"t"<<left<<setw(5)<<
27、;L.bookm.pri<<endl; outFile.close(); cout<<"排序后書籍信息已寫入booksort.txt文件"<<endl;void Inverse(SqList L) Input(L); Book book2; int i,j,k; k=L.length/2; for(i=0;i<k;i+)j=L.length-1-i;book2=L.booki; L.booki=L.bookj;L.bookj=book2;/寫入bookinverse.txt文件ofstream outFile("booki
28、nverse.txt");for(i=0;i<L.length;i+) outFile<<left<<setw(15)<<L.booki.num<<"t"<<left<<setw(50)<<L.<<"t"<<left<<setw(5)<<L.booki.pri<<endl; outFile.close(); cout<<"排序后書籍信息已寫入bookinv
29、erse.txt文件"<<endl;void Count(SqList L) cout<<"當前的圖書總數(shù)為:"<<L.length<<endl<<endl;void Insert(SqList L) Book book3; int i; int j; cout<<"請輸入待插入書籍的位置"<<endl; cin>>i; cout<<"請輸入待插入的書籍的信息"<<endl; cout<<&qu
30、ot;書號: "<<endl; cin>>book3.num; cout<<"書名: "<<endl; cin>>; cout<<"價格: "<<endl; cin>>book3.pri; if(i<1|i>L.length+1) /i值不合法 cout<<"輸入的位置錯誤,請重新輸入:"<<endl; cout<<"請輸入待插入書籍的位置"<<endl; cin>>i; for(j=L.length-1;j>=i-1;j-) L.bookj+1=L.bookj; /輸入位置及之后的元素位置后移 L.booki-1=book3; /將新元素book3放入第i個位置 L.length+; /表長增加1 /重新寫入book.txt文件 ofstream outFile("book.txt"); for(i=0;i<L.le
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西藏自治區(qū)日喀則市南木林高級中學(xué)2025屆高二生物第二學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 學(xué)海大聯(lián)考 2025屆高二化學(xué)第二學(xué)期期末調(diào)研模擬試題含解析
- 云南省昆明市師范大學(xué)附屬中學(xué)2024-2025學(xué)年高二生物第二學(xué)期期末聯(lián)考試題含解析
- 浙江省杭州市西湖區(qū)杭州學(xué)軍中學(xué)2025年高二下物理期末經(jīng)典模擬試題含解析
- 鹽城市阜寧縣高二上學(xué)期期中考試歷史試題
- 節(jié)能減排項目廠房所有權(quán)轉(zhuǎn)讓合同
- 企業(yè)內(nèi)部保密合同協(xié)議書
- 綠色生態(tài)彩鋼板房建造與維護服務(wù)合同
- 農(nóng)家樂廚師聘用及農(nóng)家特色菜品研發(fā)合同
- 房地產(chǎn)法律顧問合同(6篇)
- 鐵皮石斛的抗氧化、保濕功效研究和應(yīng)用現(xiàn)狀
- GB/Z 18620.4-2008圓柱齒輪檢驗實施規(guī)范第4部分:表面結(jié)構(gòu)和輪齒接觸斑點的檢驗
- GB/T 97.1-2002平墊圈A級
- 泊 秦 淮唐 杜牧
- GB/T 1871.1-1995磷礦石和磷精礦中五氧化二磷含量的測定磷鉬酸喹啉重量法和容量法
- GB/T 1725-2007色漆、清漆和塑料不揮發(fā)物含量的測定
- 公路工程工作總結(jié)范文
- 初中物理杠桿滑輪課件
- 課件:第七章 社會工作項目結(jié)項(《社會工作項目策劃與評估》課程)
- 李子栽培管理技術(shù)共課件
- 中債收益率曲線和中債估值的編制與應(yīng)用課件
評論
0/150
提交評論