单链表实现图书管理系统_第1页
单链表实现图书管理系统_第2页
单链表实现图书管理系统_第3页
单链表实现图书管理系统_第4页
单链表实现图书管理系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、实用文档 单链表:typedef struct char num20; char n ame50; float pri; 线性表的单链表存储 数据域 指针域 前插法创建图书链表 Book; typedef struct LNode / Book book; / struct LNode *n ext; / LNode,*Li nkList; void In put(Li nkList L=new LNode; L- next=NULL;初始化单链表 ifstream in File(book.txt); if(!i nFile) cerrCa nnot ope n this file!book

2、_head2book_head3;读取文件中的标题 while(!i nF ile.eof()到达文件尾部前逐行依次读取所有图书数据 p=new LNode; / 生成新结点 inF ilep-book .num p-book .n amep-book.pri; p-n ext=L-n ext; /插入到表头 L-n ext=p;h in File.close(); cout读取完毕!n ext; while(p) coutleftsetw(15)book .num tleftsetw(50)book .n ametle ftsetw(5)book.prin ext; coutn信息显示完毕

3、nn ext; char name120; coutbook .n ame)=0) coutleftsetw(15)book .num tleftsetw(50)book .n ametle ftsetw(5)book.prin ext; void Search nu m(L in kList int j=0; Lin kList p; p=L- next;/p指向第一个结点 cout i; while(p if(!p|ji) II第i个元素不存在 cout错误!endl; cout第i本书信息如下:endl; coutleftsetw(15)book .num tleftsetw(50)bo

4、ok .n ametle ftsetw(5)book.prin ext; p=L-n ext- n ext; while(p) if(p-book.pripmax-book.pri) pmax=p; p=p-n ext; tleftsetw(5)book.prie ndl; void Sort(Li nkList L) cout此功能还未实现,研究中 n ext; L-next = NULL; /初始化链表 ofstream outFile(book in verse.txt); /每一次将p插入到L(头结点)与L-next(链表的第一个结点之间) while (p) q = p_n ext;

5、 p-next = L-n ext; L_next = p; p = q; p=L-next;/循环完后,p指向的是链表末尾,需要重置回首元结点,否则无法写入 文件 while(p) coutsetw(15)book .num tsetw(50)book .n ametsetw(5)bo ok.prie ndl; outFileleftsetw(15)book. num tleftsetw(50)book. namet leftsetw(5)book.prin ext; cout信息已写入 bookinverse.txt中!n ext; while(p) i+; p=p-n ext; cout

6、当前的图书总数为:iendl; void In sert(L in kList L) Book bk; Lin kList p=L;/ Lin kList s=new LNode;/ int i; int j=0; cout i; cout 初始化 新结点s 请输入待插入书籍的位置e ndl; 请输入待插入的书籍的信息e ndl; cout 书号: bk .num; cout书名: bk .n ame; cout价格: bk.pri; while(p if(!p|ji-1) cout 错误!book=bk;/ s-n ext=p-n ext;/ p_n ext=s; /重新写入book.txt

7、 文件 ofstream outFile(book.txt); p=L-n ext; while(p) 寻找第i-1个结点 将结点s的数据域置为bk 将结点s插入L中 outFileleftsetw(15)book. num tleftsetw(50)book. namet leftsetw(5)book.prin ext; cout插入新的书籍后的书籍信息已重新写入book.txt文件endl; void Delete(L in kList L) Book bk1; Lin kList p=L;/初始化 Lin kList q; /临时保存被删除结点的地址以备释放 int i; int j=

8、0; cout请输入待删除书籍的位置 i; while(p- next if(!(p- next)|ji-1) cout 错误!n ext; p_n ext=q _n ext; bk1=q-book; delete q; /重新写入book.txt 文件 ofstream outFile(book.txt); p=L-n ext; while(p) outFileleftsetw(15)book. num tleftsetw(50)book. namet leftsetw(5)book.prin ext; cout删除所选书籍后的书籍信息已重新写入book.txt文件book_head1boo

9、k_head2book_head3; 读取文件中的标题 L.le ngth=O; while(!i nFile.eof() /逐行依次读取所有图书数据 inF ileL.booki. num L.booki. nameL.booki.pri; i+; /记录图书个数 L.len gth=i; in File.close(); coutn 读取 book.txt 信息完毕!endl; void Output(SqList L) for(i nt i=0;iL .len gth;i+) coutvvleftvvsetw(15)vL.booki. nu mvtvvleftvvsetw(50)vL.b

10、ook i. namevvtvvleftvvsetw(5)vL.booki.privve ndl; coutn 信息显示完毕 nn ame1; for(y=0;yLen gth;y+) /比较输入的name1与结构体数组中name是否相同; if(strcmp( name1,L.booky. name)=0) coutvvleftvvsetw(15)vL.booky. nu mvtvvleftvvsetw(50)vL.booky. n amevvtvvleftvvsetw(5)vL.booky.privve ndl; break; void Search nu m(SqList coutvv请

11、输入要查找的书的位置 i; coutvvleftvvsetw(15)vL.booki-1. num vleftvvsetw(50)vL.booki-1. na mevleftvvsetw(5)vvL.booki-1.privve ndl; void Max(SqList L) int max=0; cout价格最高的书是:endl; coutvv书号vvtvv 书名vvtvv 价格endl; for (i nt i=0;iL.bookmax.pri) max=i; coutleftsetw(15)L.bookmax. num vtvvleftvvsetw(50)vL.bo okmax. nam

12、evvtvvleftvvsetw(5)vL.bookmax.privve ndl; for (i nt j=0;jL.le ngth-1;j+) if(j!=max) if(L.bookj.pri=L.bookmax.pri) coutleftsetw(15)L.bookj. numvtvvleftvvsetw(50)vL.book j. namevvtvvleftvvsetw(5)vL.bookj.privve ndl; coute ndl; void Sort(SqList L) /冒泡排序 Book book1; /重新定义一个结构体变量 for(i nt m=0;mL.le ngth-

13、1;m+) for(i nt n=0;nL.len gth-m-1; n+) if(L.book n.priL.book n+1.pri) /交换结构体数组的值 book1=L.book n; L.book n=L.book n+1; L.book n+1=book1; / 写入 booksort.txt 文件 ofstream outFile(booksort.txt,ios:out); for(m=0;mL.le ngth-1;m+) outFilevvleftvvsetw(15)vL.bookm. numvtvvleftvvsetw(50)vL.book m. namevvtvvleft

14、vvsetw(5)vL.bookm.privve ndl; outFile.close(); cout排序后书籍信息已写入 booksort.txt文件e ndl; void Inv erse(SqList L) In put(L); Book book2; int i,j,k; k=L.le ngth/2; for(i=0;ik;i+) j=L.le ngth-1-i; book2=L.booki; L.booki=L.bookj; L.bookj=book2; / 写入 bookinverse.txt 文件 ofstream outFile(booki nv erse.txt); for(

15、i=0;iL.le ngth;i+) outFileleftsetw(15)L.booki. numvtvvleftvvsetw(50)vL.book i. namevvtvvleftvvsetw(5)vL.booki.privve ndl; outFile.close(); cout排序后书籍信息已写入book in verse.txt文件e ndl; void Cou nt(SqList L) cout当前的图书总数为:L.le ngthe ndle ndl; void In sert(SqList L) Book book3; int i; int j; cout请输入待插入书籍的位置

16、i; coutvv 请输入待插入的书籍的信息endl; cout书号: book3 .num; cout书名: book3 .n ame; cout价格: book3.pri; if(iL.le ngth+1) /i值不合法 cout cout cin i; for(j=L.le ngth-1;j=i-1;j-) L.bookj+1=L.bookj; / L.booki-1=book3;/ L.le ngth+;/ 输入的位置错误,请重新输入:endl; 请输入待插入书籍的位置endl; 输入位置及之后的元素位置后移 将新元素book3放入第i个位置 表长增加1 / 重新写入book.txt

17、文件 ofstream outFile(book.txt); for(i=0;iL.le ngth;i+) outFilevvleftvvsetw(15)vL.booki. nu mvtvvleftvvsetw(50)vL.book i. namevvtvvleftvvsetw(5)vL.booki.privve ndl; outFile.close(); cout插入新的书籍后的书籍信息已重新写入book.txt文件e ndl; void Delete(SqList L) Book book4; int i; int j; coutvv请输入待删除书籍的位置 i; if(iL.le ngth) coutvv输入的位置错误,请重新输入:endl; coutvv请输入待删除书籍的位置 i; book4=L.bo

温馨提示

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

评论

0/150

提交评论