单链表实现图书管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<book.num<<"\t"<<<"\t"<book.pri<

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<book.num<<"\t"<<<"\t"<book.pri<

}

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<book.num<<"\t"<<<"\t"<book.pri<

}

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<book.num<<"\t"<<<"\t"<book.pri<

}

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<book.num<<"\t"<<<"\t"<book.pri <

outFile<book.num<<"\t"<<<"\t"<book.pri<

p=p->next;

}

cout<<"信息已写入bookinverse.txt中!"<

}

void Count(LinkList L){

int i=0;

LinkList p;

p=L->next;

while(p){

i++;

p=p->next;

}

相关文档
最新文档