C语言中 创建链表同时 判断是否重复输入
就是创建一个单链表输入数据例如学生的学号误输时输入重复提醒错误要求重新输入这个能实现吗?谢谢大家我已经解决了定义一个数组记录数据输入后查询一下即可...
就是创建一个单链表 输入数据 例如
学生的学号 误输时 输入重复 提醒错误 要求重新输入
这个能实现吗?
谢谢大家 我已经解决了 定义一个数组记录 数据 输入后查询一下即可 展开
学生的学号 误输时 输入重复 提醒错误 要求重新输入
这个能实现吗?
谢谢大家 我已经解决了 定义一个数组记录 数据 输入后查询一下即可 展开
展开全部
可以,只要在录入学号,检索链表元素中的数据与录入的是否相同即可。
一下根据情况做一个简单的示例。
构造链表元素:
struct stu
{
char id[20];
char name[20];
char sex;
struct stu *next;
};
typedef struct stu Student ;
#define FALSE -1
#define TRUE 1
构造链表:
Student *head=NULL; //头指针
int InputStu()
{
Student *tmp,*stu1;
Student *tail;
int sign=0;
int sign2=0; //
tmp=(Student *)malloc(sizeof(Student));
if (tmp==NULL)
{
return FALSE; // 申请元素错误
}
tmp->next=NULL;
while(sign==0)
{
// 输入学号,为了简便,其他内容不输入了
if(sign2==0)
{
printf("\n请输入学生的学号:");
}
else
{
printf("\录入学号重复,重新录入:");
}
scanf("%s",tmp->id);
stu1=head;
tail=head;
sign2=0;
while(stu1)
{
if (strcmp(stu1->id,tmp->id))
{
stu1=NULL; //输入的学号已存在,设置stu1=NULL;终止循环,重新输入
sign2=1;
}
else
{
tail=stu1;
stu1=stu1->next;
}
}
if(sign2==0) //没有匹配的学号,将tmp插入到链表的结尾
{
//tail 指针指向的是链表的最后一个元素
if (tail==NULL) //空链,还没有录入内容
{
head=tmp; //本次录入的数据为第一个元素
}
else
{
tail->next=tmp;
}
sign=1;
}
}
return TRUE; //录入元素成功
}
main()
{
int i=0;
while (i<10)
{
InputStu(); //连续录入10个人
i++;
}
}
一下根据情况做一个简单的示例。
构造链表元素:
struct stu
{
char id[20];
char name[20];
char sex;
struct stu *next;
};
typedef struct stu Student ;
#define FALSE -1
#define TRUE 1
构造链表:
Student *head=NULL; //头指针
int InputStu()
{
Student *tmp,*stu1;
Student *tail;
int sign=0;
int sign2=0; //
tmp=(Student *)malloc(sizeof(Student));
if (tmp==NULL)
{
return FALSE; // 申请元素错误
}
tmp->next=NULL;
while(sign==0)
{
// 输入学号,为了简便,其他内容不输入了
if(sign2==0)
{
printf("\n请输入学生的学号:");
}
else
{
printf("\录入学号重复,重新录入:");
}
scanf("%s",tmp->id);
stu1=head;
tail=head;
sign2=0;
while(stu1)
{
if (strcmp(stu1->id,tmp->id))
{
stu1=NULL; //输入的学号已存在,设置stu1=NULL;终止循环,重新输入
sign2=1;
}
else
{
tail=stu1;
stu1=stu1->next;
}
}
if(sign2==0) //没有匹配的学号,将tmp插入到链表的结尾
{
//tail 指针指向的是链表的最后一个元素
if (tail==NULL) //空链,还没有录入内容
{
head=tmp; //本次录入的数据为第一个元素
}
else
{
tail->next=tmp;
}
sign=1;
}
}
return TRUE; //录入元素成功
}
main()
{
int i=0;
while (i<10)
{
InputStu(); //连续录入10个人
i++;
}
}
展开全部
可以,只要在录入学号,检索链表元素中的数据与录入的是否相同即可。
一下根据情况做一个简单的示例。
构造链表元素:
struct
stu
{
char
id[20];
char
name[20];
char
sex;
struct
stu
*next;
};
typedef
struct
stu
Student
;
#define
FALSE
-1
#define
TRUE
1
构造链表:
Student
*head=NULL;
//头指针
int
InputStu()
{
Student
*tmp,*stu1;
Student
*tail;
int
sign=0;
int
sign2=0;
//
tmp=(Student
*)malloc(sizeof(Student));
if
(tmp==NULL)
{
return
FALSE;
//
申请元素错误
}
tmp->next=NULL;
while(sign==0)
{
//
输入学号,为了简便,其他内容不输入了
if(sign2==0)
{
printf("\n请输入学生的学号:");
}
else
{
printf("\录入学号重复,重新录入:");
}
scanf("%s",tmp->id);
stu1=head;
tail=head;
sign2=0;
while(stu1)
{
if
(strcmp(stu1->id,tmp->id))
{
stu1=NULL;
//输入的学号已存在,设置stu1=NULL;终止循环,重新输入
sign2=1;
}
else
{
tail=stu1;
stu1=stu1->next;
}
}
if(sign2==0)
//没有匹配的学号,将tmp插入到链表的结尾
{
//tail
指针指向的是链表的最后一个元素
if
(tail==NULL)
//空链,还没有录入内容
{
head=tmp;
//本次录入的数据为第一个元素
}
else
{
tail->next=tmp;
}
sign=1;
}
}
return
TRUE;
//录入元素成功
}
main()
{
int
i=0;
while
(i<10)
{
InputStu();
//连续录入10个人
i++;
}
}
一下根据情况做一个简单的示例。
构造链表元素:
struct
stu
{
char
id[20];
char
name[20];
char
sex;
struct
stu
*next;
};
typedef
struct
stu
Student
;
#define
FALSE
-1
#define
TRUE
1
构造链表:
Student
*head=NULL;
//头指针
int
InputStu()
{
Student
*tmp,*stu1;
Student
*tail;
int
sign=0;
int
sign2=0;
//
tmp=(Student
*)malloc(sizeof(Student));
if
(tmp==NULL)
{
return
FALSE;
//
申请元素错误
}
tmp->next=NULL;
while(sign==0)
{
//
输入学号,为了简便,其他内容不输入了
if(sign2==0)
{
printf("\n请输入学生的学号:");
}
else
{
printf("\录入学号重复,重新录入:");
}
scanf("%s",tmp->id);
stu1=head;
tail=head;
sign2=0;
while(stu1)
{
if
(strcmp(stu1->id,tmp->id))
{
stu1=NULL;
//输入的学号已存在,设置stu1=NULL;终止循环,重新输入
sign2=1;
}
else
{
tail=stu1;
stu1=stu1->next;
}
}
if(sign2==0)
//没有匹配的学号,将tmp插入到链表的结尾
{
//tail
指针指向的是链表的最后一个元素
if
(tail==NULL)
//空链,还没有录入内容
{
head=tmp;
//本次录入的数据为第一个元素
}
else
{
tail->next=tmp;
}
sign=1;
}
}
return
TRUE;
//录入元素成功
}
main()
{
int
i=0;
while
(i<10)
{
InputStu();
//连续录入10个人
i++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以。
方法:添加一个新节点前,先比较所有已插入的节点是否与该节点的值相同;
如果相同则提示 输入重复 ;否则 插入该节点。
方法:添加一个新节点前,先比较所有已插入的节点是否与该节点的值相同;
如果相同则提示 输入重复 ;否则 插入该节点。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入的时候,查询表,进行判断!、
有则,提示错误,
有则,提示错误,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询