#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MaxSize 20
typedef struct guest_info
{
char name[8];
int sum;
char time[10];
int number;
struct guest_info * next;
}GuestLink,*Pointer;
void Insert(Pointer * Head);
void Search(Pointer Head);
void Update(Pointer Head);
void Delete(Pointer * Head);
void Show(Pointer Head);
int main()
{
Pointer Head=NULL;
int i;
do
{
printf("\n");
printf("1---插入(Insert)\n");
printf("2---查询(Search)\n");
printf("3---修改(Update)\n");
printf("4---删除(Delete)\n");
printf("5---显示(Show)\n");
printf("6---退出(Exit)\n");
scanf("%d",&i);
switch(i)
{
case 1: Insert(&Head);
break;
case 2: Search(Head);
break;
case 3: Update(Head);
break;
case 4: Delete(&Head);
break;
case 5: Show(Head);
break;
case 6:break;
default:printf("错误选择!请重选");
break;
}
}while(i!=6);
return 0;
}
void Insert(Pointer * Head)
{
int in_number;
Pointer p,q,r;
printf("请输入编号:");
scanf("%d",&in_number);
p=q= * Head;
while(p!=NULL)
{
if(p->number==in_number)
{
printf("已经有相同的编号:");
return ;
}
else
{
q=p;p=p->next;
}
}
r=(Pointer)malloc(sizeof(GuestLink));
r->next=NULL;
if(r==NULL)
{
printf("分配空间失败!");
return ;
}
if(q==NULL)
* Head=r;
else
{
q->next=r;
}
r->number=in_number;
printf("请输入姓名:");
scanf("%s",r->name);
printf("请输入人数:");
scanf("%d",&r->sum);
printf("请输入用餐时间:");
scanf("%s",r->time);
}
void Search(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入查询的编号:");
scanf("%d",&number);
p=Head;
while(p!=NULL&&flag)
{
if(p->number==number)
{
printf("姓名:%s",p->name);
printf("人数:%d",p->sum);
printf("用餐时间:%s",p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有查询到!!");
}
void Update(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入需要修改的编号:");
scanf("%d",&number);
p=Head;
while(p!=NULL&&flag)
{
if(p->number== number)
{
printf("请输入人数:");
scanf("%d",&p->sum);
printf("请输入用餐时间:");
scanf("%s",&p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有找到要修改的记录!!");
}
void Delete(Pointer * Head)
{
int flag=1;
int number;
Pointer p,q;
printf("请输入要删除数据的编号:");
scanf("%d",&number);
p=q= * Head;
while(p!=NULL&&flag)
{
if(p->number==number)
{
if(p== * Head)
{ *Head=p->next;free(p);}
else
{q->next=p->next;free(p);}
flag=0;
}
else
{q=p;p=p->next;}
}
if(flag)
printf("没有找到可以删除的数据!!");
}
void Show(Pointer Head)
{
Pointer p;
p=Head;
while(p!=NULL)
{
printf("姓名:%-10s",p->name);
printf("人数:%-10d",p->sum);
printf("用餐时间:%-10s",p->time);
printf("编号:%-10d\n",p->number);
p=p->next;
}
}