这个行不行,不行的话就给你个图书管理系统
#include"stdio。h"
#include"stdlib。h"
#include"string。
h"
struct stu{
char name[20];
double score;
struct stu * next;
};
//全局变量
long I;
struct stu *head=NULL;
//插入一个节点
struct stu *Insert(struct stu *head,struct stu *ptr)
{
struct stu *p=NULL,*p1=NULL;
p=ptr;
if(c==0&&head!=NULL)
{
p->next=head;
head=p;
goto end;
}
if(head==NULL)
{
head=p;
head->next=NULL;
}
else
{
p1=head;
for(i=1;inext;
}
p->next=p1->next;
p1->next=p;
Count ;
}
end:
return head;
}
//创建一个节点
struct stu *Creat(struct stu *head)
{
char name[20];
double score;
struct stu *p=NULL;
printf("提示:每一行分别输入姓名与分数,当输入姓名为0时,退出创建链表
");
printf("请输入姓名与分数:
");
scanf("%s%lf",name,&score);
while(name[0]!='0')
{
p=(struct stu *)malloc(sizeof(struct stu));
p->score=score;
strcpy(p->name,name);
head=Insert(head,p,Count);
scanf("%s",name);
if(name[0]=='0')
break;
scanf("%lf",&score);
}
return head;
}
//遍历全节点
void Print(struct stu *head)
{
struct stu *p=NULL;
if(head==NULL)
{
printf("No Records
");
return;
}
for(p=head;p!=NULL;p=p->next)
printf("%s%lf
",p->name,p->score);
}
//删除一个节点
struct stu *Delete(struct stu *head,long w)
{
struct stu *p1=NULL,*p2=NULL;
long i;
if(w==1)
{
p2=head;
head=head->next;
free(p2);
return head;
}
else
{
p1=head;
p2=head->next;
for(i=1;inext;
}
p1->next=p2->next;
free(p2);
return head;
}
}
//改变一个节点
void Change(struct stu *head,long c)
{
long i;
double score;
char name[20];
struct stu *p;
p=head;
for(i=1;inext;
printf("请输入这个节点新的数据:");
scanf("%s%lf",name,&score);
strcpy(p->name,name);
p->score=score;
}
void main()
{
char name[20];
long pd,wz,fb,jay;
double score;
struct stu *ptr=NULL;
printf("本链表有以下功能:
");
printf("1:新建节点
");
printf("2:插入节点
");
printf("3:删除节点
");
printf("4:遍历节点
");
printf("5:改变一个节点
");
printf("0:退出
");
do
{
there:
printf("请参照本表功能给出你的选择:");
fb=scanf("%ld",&pd);
getchar();
if(pd5||fb==0)
{
printf("对不起,您输入的指令有误,");
goto there;
}
switch(pd)
{
case 1:
head=Creat(head);
break;
case 2:
printf("已经有了%ld个节点
",Count);
printf("请输入你想让新节点插在的位置:");
here:
fb=scanf("%ld",&I);
if(fb!=1)
{
getchar();
printf("对不起请输入合法字符:");
goto here;
}
if(I>Count 1)
{
getchar();
printf("对不起您想要插入的位置不存在,请重新选择您想要插入的位置:");
goto
here;
}
I--;
printf("请输入姓名与分数:");
scanf("%s%lf",name,&score);
ptr=(struct stu *)malloc(sizeof(struct stu));
ptr->score=score;
strcpy(ptr->name,name);
head=Insert(head,ptr,I);
break;
case 3:
printf("已经有了%ld个节点
",Count);
printf("输入你想删除的的节点的位置:");
thisway:
fb=scanf("%ld",&wz);
if(fb!=1)
{
getchar();
printf("对不起,请输入合法字符:");
goto thisway;
}
if(wzCount)
{
getchar();
printf("对不起,你想要删除的节点不存在,请重新输入:");
goto thisway;
}
head=Delete(head,wz);
Count--;
printf("OK ! 该节点已经删除
");
break;
case 4:
Print(head);
break;
case 5:
printf("共有%d个节点
",Count);
printf("你想要改变第几个节点:");
thatway:
fb=scanf("%ld",&jay);
if(fb!=1)
{
getchar();
printf("对不起,请输入合法字符:");
goto thatway;
}
if(jayCount)
{
getchar();
printf("对不起,你想要改变的节点不存在,请重新输入:");
goto thatway;
}
Change(head,jay);
printf("OK ! 该节点已经改变
");
break;
case 0:
break;
}
}while(pd!=0);
}。
全部