#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct lb
{
char num[20];
char name[20];
struct lb *next;
};
void Delete(char *p,struct lb *head)
{
struct lb *b,*x,*y;//b为判断指针x为连接指针
b=head;
int i=1,n=0,z=0;
char judge,c[20];
while(b)
{
z++;
b=b->next;
}
b=head;
while(i)
{
n++;
i=strcmp(b->num,p);
if(i==0)
{
if(n==1)
head=b->next;
else if(n==z)
y->next=0;
else
{
x=b->next;
y->next=x;
}
}
y=b;
b=b->next;
if(n==z)
break;
}
b=head;
n=0;
while(b)
{
n++;
b=b->next;
}
printf("%d%d",n,z);
if(n==z)
{
printf("没有找到想要删除的学号条目");
printf("是否放弃删除若放弃请输入q\n如果仍想删除请输入任意");
fflush(stdin);
scanf("%c",&judge);
if(judge=='q');
else
{
printf("请输入准确的要删除的条目学号");
fflush(stdin);
scanf("%s",c);
Delete(c,head);
}
}
}
struct lb *creat(struct lb *head,int n)
{
char judge;
struct lb *q=0,*x,*p,*b;//b为连接指针p为输入的结构体地址指针head为头指针;
p=b=0;
x=head;
judge='c';
q=x;
while(x)
{
q=x;
x=x->next;
}
b=q;
while(judge=='c'||judge=='C')
{
printf("请输入学号和姓名:\n");
p=(struct lb *)malloc(sizeof(struct lb));//p为输入结构体的地址
scanf("%s %s",p->num,p->name);
if(n==1)
{
q=p->num;
head=q;
b=q;
}
else
{
b->next=p;
b=b->next;
}
n++;
fflush(stdin);
printf("是否继续输入如果继续请输入 c \n如果不输入请输入n\n:");
scanf("%c",&judge);
if(judge!='c'&&judge!='C')
b=0;
}
return head;
}
main()
{
struct lb *state,*b;
int n=0;
printf("进入输入模式");
char judge='i';
while(judge=='i'||judge=='I'||judge=='d'||judge=='D')
{
switch(judge)
{
case 'i':
{
n++;
if(n==1)
state=creat(0,1);
else
state=creat(state,n);
n++;
}
break;
case 'I':
state=creat(state,n);
break;
case 'd':
{
char c[20];
printf("请输入准确的要删除的条目学号");
fflush(stdin);
scanf("%s",c);
Delete(c,state);
break;
}
case 'D':
{
char e[20];
printf("请输入准确的要删除的条目学号");
fflush(stdin);
scanf("%s",e);
Delete(e,state);
break;
}
}
printf("继续输入请输入i\n删除某个条目请输入d\n如果不进行输入请输入n\n:");
fflush(stdin);
judge=getchar();
}
b=state;
while(b)
{
printf("%s %s\n",b->num,b->name);
b=b->next;
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交