#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct patients
{
char name[20];
char id_number[20];
char disease[20];
char bed_number[5];
int q;
struct patients* pnext;
};
struct patients* create(int *n)
{
struct patients *pnew,*pend,*phead;
char space[10]={"********"};
char a[4];
phead=pnew=pend=(struct patients*)malloc(sizeof(struct patients));
if(*n==0)
{
phead->pnext=NULL;
}
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
printf("输入99结束注册");
scanf("%d",&pnew->q);
*n++;
for(;;)
{
if(pend->q==99)
{
break;
}
pnew=(struct patients*)malloc(sizeof(struct patients));
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
printf("输入99结束注册");
scanf("%d",&pnew->q);
*n++;
pend->pnext=pnew;
pend=pnew;
if(*n==19)
{
printf("床位已满,自动退出循环\n");
return phead;
}
}
return phead;
}
struct patients* re(int *n)
{
struct patients *phead;
phead=create(n);
return phead;
}
void see_patients(struct patients *phead)
{
struct patients *pend;
pend=phead;
for(;;)
{
printf("%s******",pend->name);
printf("%s******",pend->id_number);
printf("%s******",pend->disease);
printf("%s******",pend->bed_number);
printf("\n");
pend=pend->pnext;
if(pend==NULL)
{
break;
}
}
}
struct patients *change_patients(int b,struct patients *phead)
{
int i=0;
struct patients *pend,*pnew,*p,*q;
pend=phead;
for(i;i<b-1;i++)
{
q=pend;//one
pend=pend->pnext;//two
p=pend->pnext;//three
}
pnew=(struct patients*)malloc(sizeof(struct patients));
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
pnew->pnext=p;
q->pnext=pnew;
return phead;
}
void main()
{
int l;
int icount=0;
struct patients *phead;
menu:
phead=re(&icount);
printf("请输入修改链表的序号:");
scanf("%d",&l);
change_patients(l,phead);
see_patients(phead);
goto menu;
}
这个程序的goto指令只会执行一次,我不太清楚为什么