int DeleteNote(int num)
{
STU *pc/*当前指针*/,*pb;
pb=head;
pc=head->next;
while(pc->num!=num)
{
pb=pc;
pc=pc->next;
}
if(pc->num==num)//找到,即删除pc所指向的节点
{
pb->next=pc->next;
free(pc);
}else
{
printf("不存在!\n")
}
}
#include<stdio.h>
#include<stdlib.h>
typedef struct student S;
S *head;
S *p;
struct student
{
char num;
char sex;
char name[100];
struct student *next;
};
int Add()
{
S *New;
New=(S *)malloc(sizeof(S));
printf("输入个样式:学号 性别 姓名\n");
scanf("%d",&New->num);
getchar();
scanf("%c",&New->sex);
getchar();
scanf("%s",New->name);
getchar();
New->next=NULL;
p->next=New;
p=p->next;
return -1;
}
int print()
{
printf("全部信息如下:\n");
p=head->next;//从head的下一个开始打印
while(p!=NULL)
{
printf("%d %c %s\n",p->num,p->sex,p->name);
p=p->next;
}
return 0;
}
int Find(int num)
{
S *s;
s=head->next;
while(s!=NULL)
{
if (s->num==num)
{
printf("%d %c %s\n",s->num,s->sex,s->name);
return 0;
}
s=s->next;
}
printf("No Have\n");
return -1 ;
}
int DeleteNote(int num)
{
S *pc/*当前指针*/,*pb/*上一个指针*/;
pb=head;
pc=head->next;
while(pc->num!=num)
{
pb=pc;
pc=pc->next;
}
if(pc->num==num)//找到,即删除pc所指向的节点
{
pb->next=pc->next;
free(pc);
}else
{
printf("不存在!\n");
}
return 0;
}
int renew(int num_1)
{
S *e;
e=head->next;
while(p!=NULL)
{
if(e->num==num_1)
{
//printf("%d %c %s\n",p->num,p->sex,p->name);
printf("请输入%d学生的新信息:\n",e->num);
scanf("%d",&e->num);
getchar();
scanf("%c",&e->sex);
getchar();
scanf("%s",e->name);
getchar();
printf("%d %c %s\n",e->num,e->sex,e->name);
printf("修改完毕!\n");
break;
}
e=e->next;
}
return -1;
}
int main()
{
int num_1;
int num,i;
head=(S *)malloc(sizeof(S));
p=(S *)malloc(sizeof(S));
/*head->num=100;
head->sex='m';
strcpy(head->name,"zhangsan");
head->next=NULL;*/
p=head;//这是一个头节点
printf("请输入y,回车后输入数据:\n");
for(i=0;i<99999;i++)
{
fflush(stdin);
switch(getchar())
{
case 'y': Add();
break;
case 'c':
printf("输入学号查找:\n");
scanf("%d",&num);
Find(num);
break;
case 's':
printf("输入修改的学号:\n");
scanf("%d",&num_1);
renew(num_1);
break;
case 'h':
printf("输入删除的学号:\n");
scanf("%d",&num);
DeleteNote(num);
break;
case 'x': print();
break;
default:return 0;
}
printf("输入y继续,c查找,s更改,h删除,其他字符结束\n");
}
system("cls");
return 0;
}