顺序表C++代码.doc_第1页
顺序表C++代码.doc_第2页
顺序表C++代码.doc_第3页
顺序表C++代码.doc_第4页
顺序表C++代码.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include #includeusing namespace std;class Cbook/图书类private:string bookname;/书名string writer;/作者 float price;/价格friend class Cbooks;/链表类public:Cbook():bookname(C+),writer(unkown),price(0) /构造函数void Output()/输出函数coutbooknamewriterpriceendl;cout-endl; void Input()/输入函数 cout请依次输入书名,作者,价格:booknamewriterprice; ;class Cbooks/链表类private:Cbook* books;/基地址 intcount;/储存总数 intsize;/容量stringlistname;/链表对象名public:Cbooks():count(0),size(2),listname(未分类) /构造函数books=new Cbook2;Cbooks()/析构函数delete books;count=0;size=0;void Output()/输出函数coutlistname 全部书目信息endl;cout-endl;cout序号 书名 作者 价格endl;cout-endl;for(int i=0;icount;i+) cout(i+1)Output();cout数目:count 总空间:size=size) /空间不够时先调用扩容函数 if(!Enlarge() cout内存申请失败,插入失败!endl; return false; bookscount+=book;coutInserted .endl;return true;bool Insert(Cbook book,int i)/任意位置i插入函数if(i(count+1)/ i 越界cout指定位置非法!=size)/空间不够时调用扩容函数 if(!Enlarge() cout内存申请失败,插入失败!=q;p-) *(p+1)=*p; /从表尾把元素依次往后移一位*q=book;count+;coutInserted.endl;return true;i-1count-1count1ipqbool Enlarge()/追加空间函数Cbook* books0=new Cbooksize+10;/新申请空间,大小增加10if(!books0) return false;for(int i=0;icount;i+) books0i=booksi;/拷贝元素到新空间delete books;size=size+10;books=books0;return true;bool RemoveTail() /表尾删除函数if(count=0) cout为空表,删除失败!endl;return false;count-;coutRemoved.endl;return true;bool Remove(int i) /任意位置删除函数if(count=0) /为空表cout为空表,删除失败!count|i1) /i大于元素总数或i1cout指定位置非法,删除失败!endl;return false;Cbook* p=&booksi-1; /指向要删除的元素Cbook* q=&bookscount-1; /指向最后一个要移动的元素for(p;pq;p+)*p=*(p+1);count-;coutRemoved.=1)&(i=count) return booksi-1;cout指定位置非法!endl;exit(0);*/void Find(string name) /按书名查找函数,输出图书信息及位序cout-endl;for(int i=1;ibookname=name)cout为第iOutput();cout查找完毕endl;bool Read()/从文件中读取数据string filename;coutfilename;ifstream file(filename.c_str();if(!file) cout文件打开失败!listname;filecount;for(int i=1;ibook.booknamebook.writerbook.price;InsertTail(book);return true;bool Merge(Cbooks& booksA,Cbooks& booksB)/有序归并函数delete books;count=size=booksA.count+booksB.count;books=new Cbooksize;Cbook *pc=books;if(!books)cout申请内存失败,归并失败!endl;return false;Cbook *pa=booksA.books;/指向A表首元素Cbook *paTail=&booksA.booksbooksA.count-1; /指向A表表尾元素Cbook *pb=booksB.books;/指向B表首元素Cbook *pbTail=&booksB.booksbooksB.count-1; /指向B表表尾元素while(pa=paTail)&(pbprice)price) *pc+=*pa+;else *pc+=*pb+;while(pa=paTail) *pc+=*pa+;while(pb=pbTail) *pc+=*pb+;return true;void main()int command=1; /指令int i;/用于表示操作元素位序和子指令string bookname; /图书书名,用于查找Cbook book1;Cbooks books1,booksA,booksB;cout*endl; cout 图书管理系统endl; cout*endl;while(command!=0) cout请选择操作:.插入2.查询3.删除4.输出所有5.有序归并0.退出command; switch(command) case 1:couti; if(i=1) book1.Input(); couti; if(i=0) books1.InsertTail(book1); else books1.Insert(book1,i); else if(i=2) books1.Read(); else cout指令错误,返回主菜单!endl; break;case 2:cout请输入要查找的图书书名:bookname; books1.Find(bookname); break;case 3:cout请输入要删除的图书序号(若删除表尾元素,请输入):i; if(i=0) books1.RemoveTail(); else books1.Remove(i); break;case 4:books1.Output(); break;case 5:cout请依次输入要归并的有序表的文件名:A、Bendl; booksA.Read

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论