资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单链表:typedef struct (char num20;char name50;float pri;Book;typedef struct LNode(Book book;struct LNode *next; / LNode,*LinkList;void Input(LinkList &L) /LinkList p;/线性表的单链表存储/数据域指针域前插法创建图书链表L=new LNode;L-next=NULL;/ 初始化单链表ifstream inFile(book.txt);if(!inFile)cerrCannot open this file!book.nump-book.namep-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)coutleftsetw(15)p-book.numtleftsetw(50)p-book.nametleftsetw(5)p-book.priendl;p=p-next;)coutn信息显示完毕nendl;)void Searchname(LinkList &L)(LinkList p;p=L-next;char name120;coutname1;while(p)(if(strcmp(name1,p-book.name)=0)coutleftsetw(15)book.numtleftsetw(50)book.nametleftsetw(5)book.prinext;void Searchnum(LinkList &L)int i;int j=0;LinkList p;p=L-next;/p指向第一个结点couti;/顺着链表向后扫描,直到p指向第i个元素或p为空j+;p=p-next;)if(!p|ji)/第i个元素不存在cout错误!endl;)cout 第i 本书信息如下:endl;coutleftsetw(15)p-book.numtleftsetw(50)p-book.nametleftsetw(5)p-book.priendl;)void Max(LinkList &L)LinkList pmax,p;pmax=L-next;p=L-next-next;while(p)if(p-book.pripmax-book.pri)pmax=p;p=p-next;coutleftsetw(15)book.numtleftsetw(50)book.nametleftsetw(5)book.priendl;void Sort(LinkList L)cout 此功能还未实现,研究中 next;L-next = NULL; /初始化链表ofstream outFile(bookinverse.txt);/每一次将p插入到L(头结点)与L-next(链表的第一个结点之间)while (p)q = p-next;p-next = L-next;L-next = p;p = q;p=L-next;/ 循环完后,p指向的是链表末尾,需要重置回首元结点,否则无法写入 文件while(p)(coutsetw(15)book.numtsetw(50)book.nametset w(5)book.priendl;outFileleftsetw(15)book.numtleftsetw(50)book.nametleftsetw(5)book.prinext;cout信息已写入 bookinverse.txt 中!next;while(p)(i+;p=p-next;cout当前的图书总数为:iendl;)void lnsert(LinkList L)Book bk;LinkList p=L;/ 初始化LinkList s=new LNode;/ 新结点 sinti;int j=0;cout请输入待插入书籍的位置endl;cini;cout请输入待插入的书籍的信息endl;cout书号:endl;cinbk.num;cout 书名:endl;cinbk.name;cout价格:endl;cinbk.pri;while(p&jnext;)cout错误!book=bk;/将结点s的数据域置为 bks-next=p-next;/ 将结点 s 插入 L 中p-next=s;/重新写入book.txt 文件ofstream outFile(book.txt);p=L-next;while(p) outFileleftsetw(15)book.numtleftsetw(50)book.nametleftsetw(5)book.prinext;cout插入新的书籍后的书籍信息已重新写入book.txt文件endl;void Delete(LinkList L)Book bk1;LinkList p=L;/ 初始化LinkList q;/临时保存被删除结点的地址以备释放int i;int j=0;cout请输入待删除书籍的位置i;while(p-next&jnext;if(!(p-next)|ji-1)cout错误!next;p-next=q-next;bk1=q-book;delete q;/重新写入book.txt 文件ofstream outFile(book.txt);p=L-next;while(p)outFileleftsetw(15)book.numtleftsetw(50)book.na metleftsetw(5)book.prinext;cout删除所选书籍后的书籍信息已重新写入book.txt文件endl;顺序表typedef structBook *book;int length;/图书表的图书记录个数SqList;void Input(SqList &L)int i=0;char book_head110,book_head210,book_head310; / 定义文件中标题L.book=new BookMAXSIZE;ifstream inFile(book.txt); / 打开文件if(!inFile) cerrCannot open this file!book_head1book_head2book_head3;/读取文件中的标题L.length=0;while(!inFile.eof()( /逐行依次读取所有图书数据inFileL.booki.num L.booki.nameL.booki.pri;i+;/记录图书个数L.length=i;inFile.close();coutn 读取 book.txt 信息完毕!”endl;void Output(SqList L)(for(int i=0;iL.length;i+)(coutleftsetw(15)L.booki.numtleftsetw(50)L.booki.nametleftsetw(5)L.booki.priendl;coutn信息显示完毕 nendl;void Searchname(SqList &L)(int y;char name120;coutname1;for(y=0;yL.length;y+)/比较输入的name1与结构体数组中name是否相同;if(strcmp(name1,L.booky.name)=0)coutleftsetw(15)L.booky.numtleftsetw(50)L.booky.nametleftsetw(5)L.booky.priendl;break;void Searchnum(SqList &L)int i;cout请输入要查找的书的位置i;coutleftsetw(15)L.booki-1.numleftsetw(50)L.booki- 1.namelefts
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号