请问这个链表实现的图书管理系统需要怎样修改?
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int num;
char name[20];
float price;
}Book;
typedef struct Lnode {
Book data;
struct Lnode* next;
}Node, * LinkList;
void menu();
int init(LinkList *L);
int insert(LinkList L, int i, Book b);
int del(LinkList *L, int i, Book b);
int search(LinkList L, int i,Book &b);
int update(LinkList &L, Book b);
void create(LinkList *L,int n);
int main() {
LinkList L;
Book b;
int n,t=1,i;
init(&L);
void menu();
while (t) {
printf("请输入选项:\n");
scanf("%d", &n);
switch (n) {
case 1:
create(&L,n); break;
case 2:
insert(L,i,b); break;
case 3:
del(&L, i, b); break;
case 4:
search(L,i,b); break;
case 5:
update(L, b); break;
case 0:
t = 0;
break;
default:
printf("wrong! choose again!");
}
}
}
void menu() {
printf(" 图书管理系统 \n");
printf("1.创建 2.插入 \n");
printf("3.删除 4.查找 \n");
printf("4.修改 0.退出 \n");
printf("只能选 (0-5)\n");
}
int init(LinkList *L) {
(*L )= new Node;
if ((*L )= NULL) {
printf("创建失败!\n");
return 0;
}
(*L)->next = NULL;
return 1;
}
int insert(LinkList L,int i,Book b){
LinkList p=L;
Node s;
int j=0;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1)printf("插入位置有误\n");
s=new Node;
if(s=NULL)printf("插入失败\n");
s->data=b;
s->next=p->next;
p->next=s;
return 1;
}
int del(LinkList L,int i,Book b){
LinkList p=L;
int j=0;
while(p&&j<i-1){
p->next;
++j;
}
if(!p||!(p->next)||j>i-1)printf("删除失败\n");
LinkList s=p->next;
b=s->data;
p->next=s->next;
delete(s);
}
int search(LinkList L,int i,Book &b){
LinkList p=L->next;
int j=1;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1)
printf("查不到!\n");
b=p->data;
printf("编号 书名 价格 :\n");
printf("%d %s %.2f",b.num,b.name,b.price);
return 1;
}
void create(LinkList &L,int n){
printf("请输入图书个数:\n");
scanf("%d",&n);
Node L=new Node;
L->next=NULL;
for(i=n;i>0;i--){
Node p=new Node;
printf("请输入第%d个图书编号、书名、价格\n",n+1-i);
scanf(&p->data);
p->next=L->next;
L->next=p;
}
}