帮忙看下,把数据输入链表的时候如何检测和链表中的数据是否有重复 50

#include<stdlib.h>#include<stdio.h>#include<string.h>typedefstructLNode{intstuid;char... #include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct LNode
{

int stuid;
char name[20];
float english;
float math;
float database;
float sum;
float average;

struct LNode *next;
}LNode,*LinkList;

LinkList Input()
{
int i,n;
int num;

LinkList p,L;

L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;

printf("请输入要输入的学生个数:\n");
scanf("%2d",&n);

for(i=1;i<=n;i++)
{

printf("\n");
printf("** 请输入第%d个学生的信息 **\n",i);
printf("\n");

p=(LinkList)malloc(sizeof(LNode));

printf("请输入学生的学号:");
while(1)
{
scanf("%d",&num);
if(num<1000000000||num>9999999999)
{
printf("输入的学号有误,请重新输入");
continue;
}
else

break;
}
while(1)
{

}
/*
while(NULL!=p)
{
printf("stud=%d",p->stuid);
printf("num=%d",num);
if(p->stuid==num)
{

printf("已存在的学号,请重新输入");
scanf("%d",&num);
p=p->next;
continue;
}
else
p->stuid=num;
break;
}
*/
printf("请输入学生的姓名:");

scanf("%s",p->name);

printf("请输入学生的英语成绩:");
while(1){
scanf("%f",&p->english);
if(p->english<0||p->english>100)
{
printf("输入的成绩错误,请重新输入");
continue;
}
else
break;
}
printf("请输入学生的高数成绩:");
while(1){
scanf("%f",&p->math);
if(p->math<0||p->math>100)
{
printf("输入的成绩错误,请重新输入");
continue;
}
else
break;
}

printf("请输入学生的数据结构成绩:");
while(1){
scanf("%f",&p->database);
if(p->database<0||p->database>100)
{
printf("输入的成绩错误,请重新输入");
continue;
}
else
break;
}

p->sum=p->english+p->math+p->database;

p->average=p->sum/3;

p->next=L->next;
L->next=p;

}

return L;

}

如上两个函数,第一个是链表的结构体,第二个是把数据输入到链表中,我的问题是在输入学号的时候,如何判定输入的学号是否与原来链表中有的学号相同,有则无法输入,改了好久都不行
展开
 我来答
扈怀炜4h
2017-06-16 · TA获得超过6039个赞
知道大有可为答主
回答量:6907
采纳率:67%
帮助的人:1357万
展开全部
while(1)
{
   scanf("%d",&num);
   if(num<1000000000||num>9999999999)
   {
     printf("输入的学号有误,请重新输入");
     continue;
     }
    else
      if(isExist(L,num)==1)   //增加一个函数,判断是否存在
        continue;
      else  
break;
}

//函数
 int isExist(LinkList h,int n)
 {
     int flag=0;
     LinkList p;
     p=h;
     while(p!=null && p->stuid!=n)
      p=p->next;
    if(p->next==n) 
      flag=1; 
    return flag; 
 }
更多追问追答
追问
编译提示这个 'struct LNode *' differs in levels of indirection from 'int '
在if(p->next==n) 这一行
追答
应该是p->stuid
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式