《数据结构课》程设计报告
}
return 0;
printf(\书号 书名 作者 出版社
名称 存馆数量 定价\\n\
printf(\ %s %s %
void LocateElem(LinkList *&L) //查询 {
LinkList *p=L->next; //pint c; int x=0;
printf(\ 1 按书名查询:\\n\指向第一个数据结点
s %d %s\ata.name,p->data.author,p->data.press,p->data.count,&p->data.price); printf(\ } }
if (p==NULL&&x==0)
printf(\对不起,不存在此图
书!\\n\
break;
case 2:printf(\请输入图书作者:\\n\ while(p!=NULL)
p=p->next;
x++;
char name1[10],author1[10],press1[10]; printf(\ 2 按作者名查询:\\n\ printf(\ 3 按出版社名称:\\n\
printf(\ 4 返回\\n\
printf(\ 请选择1--4进行操作:\\n\
{
printf(\您的输入有误!\\n\scanf(\
scanf(\if(c>4||c<1) {
{
if(strcmp( name1,p->data.name)!=0) // p=p->next;
查找图书书名 else
{ } switch(c) {
case 1:printf(\请输入图书书名: \\n\ scanf(\ while(p!=NULL)
scanf(\
if(strcmp( author1,p->data.author)!=0)//查
p=p->next; {
printf(\书号 书名 作者 出版
找图书作者 else
printf(\ %s %s %s %d %s\ata.name,p->data.author,p->data.press,p->data.count,&p->data.price); printf(\
第 12 页 共 19页
社名称 存馆数量 定价\\n\
《数据结构课》程设计报告
} }
p=p->next ; } }
case 4:
break;
x++;
if (p==NULL&&x==0)
printf(\对不起,不存在此图
书!\\n\
break;
case 3:printf(\请输入图书的出版社名称:
int Sort(LinkList *&L) //递增有序排序(直接插入排序法) {
LinkList *p=L->next,*q,*r; //p指向第一个数据结点
if(p!=NULL) //若原单链表中有一个或以上的数据结点 {
r=p->next; //r保存*p结点 p->next=NULL; //构造只含一 p=r;
while(p!=NULL) {
r=p->next; //r保存*p结点 q=L;
直接后继结点的指针 个数据结点的有序表
\\n\
scanf(\ while(p!=NULL) {
if(strcmp( press1,p->data.press)!=0)//查
{
printf(\书号 书名 作者 出版
p=p->next;
找图书出版社名称 else
printf(\ %s %s %s %d %s\ata.name,p->data.author,p->data.press,p->data.count,&p->data.price); printf(\ } }
if (p==NULL&&x==0)
printf(\对不起!不存在此图书
\\n\
break;
p=p->next;
x++;
社名称 存馆数量 定价\\n\
的直接后继结点的指针
while(q->next!=NULL&&q->next->data.num
q=q->next; //在有序表中找
插入*p的直接前驱结点*q的位置
p->next=q->next; //将*p插入到*q q->next=p;
p=r; //扫描原单链
之后
表余下的结点
第 13 页 共 19页
《数据结构课》程设计报告
}
} {
printf(\请输入修改后的信息!\\n\ printf(\书号 书名 作者 出版社名称 存馆数量 定价\\n\
scanf(\ata.name,p->data.author,p->data.press,&p->data.count,p->data.price); printf(\修改成功!\\n\
return 0; }
void Display(LinkList *&L) //输出排序结果 {
LinkList *p=L->next; while (p!=NULL) {
printf(\书号 书名 作者 出版社名
return 0; } p=p->next; }
printf(\不存在此图书\\n\ return 0;
int ListDelete(LinkList *&L) //删除 { LinkList *p=L->next,*q=L;
char name1[10]; if(p!=NULL) { }
while(p->next!=NULL&&strcmp(p->data.{
p=p->next; q=q->next; }
printf(\请输入要删除的书名:\ scanf(\
称 存馆数量 定价\\n\
printf(\ %s %s %s } %d %s\p->data.author,p->data.press,p->data.count,p->data.price);
printf(\ }
int ModifyList(LinkList *&L) //修改 { LinkList *p=L; char name1[10];
printf(\请输入要修改的图书的书名:\\n\ scanf(\ while(p!=NULL) {
if(strcmp(name1,p->data.name)==0) //查找所要修改的书名
p=p->next; }
name,name1)!=0)
if(p->next!=NULL) //如果p此时不是最后一个节点,说明此时已经找到书
第 14 页 共 19页
{
《数据结构课》程设计报告
q->next=p->next; printf(\删除成功!\\n\return 0; }
else if(strcmp(name1,p->data.name)==0) }
void Return(LinkList *&L) //归还 {
LinkList *p=L->next; char name1[10];
printf(\输入归还书的书名: \\n\scanf(\
while(p->next!=NULL&&strcmp(name1,p{ }
printf(\借书成功!\\n\
p->data.count--;
if(p->next==NULL&&strcmp(name1,p->data.name)!=0) //如果p此时为最后一个结点并且没有找到与之相符的书名 }
void Borrow(LinkList *&L) //借阅 {
LinkList *p=L->next; char name1[10];
printf(\请输入要借阅的图书的书名:\\n\ scanf(\
while(p->next!=NULL&&strcmp(name1,p->data.name)!=0) p=p->next;
if(p->next==NULL&&strcmp(name1,p->data.name)!=0)
printf(\此图书不存在!\\n\ else if(p->data.count<1) printf(\此书已借完!\\n\
{
printf(\你输入的书名不存在,请核实} else {
q->next=NULL;
printf(\删除成功!\\n\ } return 0;
后重新输入!\\n\
->data.name)!=0) p=p->next;
if(p->next==NULL&&strcmp(name1,p->data.name)!=0)
printf(\错误!此图书不存在!\\n\else if(strcmp(name1,p->data.name)==0) {
printf(\该书归还成功!\\n\ p->data.count++; }
void main() //主函数 {
int s; LinkList *L;
第 15 页 共 19页
}

