单链表实现图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单链表:typedef struct {
char num[20];
char name[50];
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){
cerr<<"Cannot open this file!"< exit(1); } char book_head1[10],book_head2[10],book_head3[10]; //定义文件中标题 inFile>>book_head1>>book_head2>>book_head3;//读取文件中的标题 while(!inFile.eof()){//到达文件尾部前逐行依次读取所有图书数据 p=new LNode; //生成新结点 inFile>>p->book.num>>p->>>p->book.pri; p->next=L->next; //插入到表头 L->next=p;h } inFile.close(); cout<<"读取完毕!"< } void Output(LinkList &L){//输出 LinkList p; p=L->next; while(p){ cout< p=p->next; } cout<<"\n信息显示完毕\n"< } void Searchname(LinkList &L){ LinkList p; p=L->next; char name1[20]; cout<<"请输入要查找的书名:"; cin>>name1; while(p){ if(strcmp(name1,p->)==0){ cout< } p=p->next; } } void Searchnum(LinkList &L){ int i; int j=0; LinkList p; p=L->next; //p指向第一个结点 cout<<"请输入要查找的书籍的位置"; cin>>i; while(p&&j p=p->next; } if(!p||j>i){ //第i个元素不存在 cout<<"错误!"< } cout<<"第"< cout< } void Max(LinkList &L){ LinkList pmax,p; pmax=L->next; p=L->next->next; while(p){ if(p->book.pri>pmax->book.pri) pmax=p; p=p->next; } cout< } void Sort(LinkList L){ cout<<"此功能还未实现,研究中"< } void Inverse(LinkList &L){ LinkList p; //待插入到链表的节点 LinkList q; p = L->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){ cout< outFile< p=p->next; } cout<<"信息已写入bookinverse.txt中!"< } void Count(LinkList L){ int i=0; LinkList p; p=L->next; while(p){ i++; p=p->next; }