版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rè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; /定義文件中標(biāo)題 inFile>>book_head1>>book_head2>>book_head3;/讀取文件中的標(biāo)題 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<<"當(dāng)前的圖書總數(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; /定義文件中標(biāo)題 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;/讀取文件中的標(biāo)題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<<"當(dāng)前的圖書總數(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度汽車維修與租賃業(yè)務(wù)管理服務(wù)合同2篇
- 四年級下學(xué)期教學(xué)計劃集錦五篇
- 小學(xué)三年級上冊英語教案
- 元旦晚會主持稿集合15篇
- 寫給老師的道歉信模板集合八篇
- 秋天的校園作文400字范文(10篇)
- 幼兒園春季學(xué)期工作總結(jié)5篇
- 我的愿望小學(xué)作文15篇
- 畢業(yè)實習(xí)總結(jié)(集合15篇)
- 工程居間協(xié)議協(xié)議書3篇
- 教科版2022-2023學(xué)年度上學(xué)期三年級科學(xué)上冊期末測試卷及答案(含八套題)
- 承建紅磚燒成隧道窯合同協(xié)議書范本模板
- 大班上學(xué)期周計劃1—20周精編版
- 三年級上冊數(shù)學(xué)試卷附加題解析
- 拌和站危險源清單及控制措施
- 化驗室常用電熱設(shè)備PPT課件
- 沈晴霓《操作系統(tǒng)與虛擬化安全》courera課程答案總結(jié)
- 工程掛靠協(xié)議書模板
- 上海1933老場坊項目市場調(diào)研分析報告
- 龍門式數(shù)控火焰切割機橫向進給系統(tǒng)的設(shè)計畢業(yè)設(shè)計
- 拒絕轉(zhuǎn)院知情告知書.doc
評論
0/150
提交評論