链表的打印问题
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define len 20
typedef struct b_inf{
int code[len];
char name[len];
char type[len];
int remain_num;
struct b_inf *next;
}B_INF;
void Mainmenu(int);
void Addbook(B_INF **head);
void Access(char *str);
void Showbook(B_INF *head);
void Searchbook(B_INF *head);
void Deletebook(B_INF **head);
void Borrowbook(B_INF *head);
void Access(char *str)
{
int i,a=0,b=0;
while(1)
{
for(i=0;i<6;i++)
{
if(str[i] >= 'A' && str[i] <= 'Z')
a++;
else if(str[i] >= 'a' && str[i] <= 'z')
b++;
}
if(a==0||b==0)
{
printf("Wrong input, try again :");
gets(str);
break;
}
else
{
system("cls");
break;
}
system("cls");
}
}
int main()
{
B_INF *head=NULL;
int total,option,flag=1;
char str[6];
printf("-----Welcome-----\n");
printf("Please input your password:");
gets(str);
Access(str);
while(flag)
{
do
{
printf("\n****** Main Menu ******\n");
printf("1. Show Book's Imformation\n");
printf("2. Add A Book\n");
printf("3. Delete A Book\n");
printf("4. Search A Book\n");
printf("5. Borrow A Book\n");
printf("6. Exit the program\n");
printf("************************\n");
printf("Please choose a option:");
scanf("%d",&option);
}while(option>6||option<1);
Mainmenu(option);
}
}
void Mainmenu(int option)
{
B_INF *head=NULL;
int n;
char bkNum[20];
switch (option)
{
case 1:
Showbook(head);
break;
case 2:
Addbook(&head);
break;
case 3:
Deletebook(&head);
break;
case 4:
Searchbook(head);
break;
case 5:
Borrowbook(head);
break;
case 6:
exit(1);
}
}
void Addbook(B_INF **head)
{
system("cls");
B_INF *pnew,*current;
printf("Book's Code: ");
scanf("%d",&pnew->code);
printf("Book's Name: ");
getchar();
gets(pnew->name);
printf("Book's Type: ");
getchar();
gets(pnew->type);
printf("Remaining of the new book: ");
scanf("%d",&pnew->remain_num);
printf("All compeleted!");
if(NULL == *head)
{
*head = pnew;
(*head)->next = NULL;
}
else
{
current = *head;
while(current)
{
if(NULL == current->next)
{
current->next = pnew;
pnew->next = NULL;
}
current = current->next;
}
}
}
void Deletebook(B_INF **head)
{
system("cls");
int bookcode;
B_INF *current;
B_INF *previous;
current=*head;
previous=NULL;
printf("Please enter the code of the book to delete:");
scanf("%d",&bookcode);
while(current!=NULL&&*current->code!=bookcode)
{
previous=current;
current=current->next;
}
if(current==NULL)
{
printf("Book not found!");
return ;
}
else
{
if(previous==NULL)
{
*head=current->next;
}
else
{
previous->next=current->next;
}
}
printf("\nDelete compeleted!\n");
}
void Searchbook(B_INF *head)
{
system("cls");
int bookcode;
B_INF *current;
current=head;
printf("Please enter the code of the book to search:");
scanf("%d",&bookcode);
while(current!=NULL&& current->code!=bookcode)
{
current=current->next;
}
if(current==NULL)
printf("\nBook %d not found!\n",bookcode);
else
{
printf("\n%d\t%s\t%s\t%d",current->code,current->name,current->type,current->remain_num);
}
}
void Showbook(B_INF *head)
{
system("cls");
B_INF *current;
current =head;
printf("************** Book's Info ******************");
while(current!=NULL)
{
printf("\n%d\t%s\t%s\t%d",current->code,current->name,current->type,current->remain_num);
current = current->next;
}
}
void Borrowbook(B_INF *head)
{
system("cls");
int number,bookcode;
B_INF *p=head;
printf("Please enter the code of the book you want to borrow:");
scanf("%d",&bookcode);
printf("\nPlease enter the number of the book you want to borrow:");
scanf("%d",&number);
while(p!=NULL&&*p->code!=bookcode)
{
p=p->next;
}
p->remain_num=p->remain_num-number;
}
代码就这样emmm 但为什么添加完之和输入1什么信息都莫得 求改正