qq_33747112
李我远点
2017-02-28 03:10
采纳率: 71.4%
浏览 896
已采纳

建立一个学生链表,删除指定年龄的学生的节点,下面程序为什么不对?

#include
#include
#include
#include

typedef struct student
{
int num;
char name[20];
char sex;
int age;
struct student *next;
}node;

node* creat(void)
{
node * L,*p;
L = (node*)malloc(sizeof(node));
p = L;
int n;
printf("人数:");
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
node newp = (node)malloc(sizeof(node));
scanf("%d,%s,%c,%d",&newp->num,newp->name,&newp->sex,&newp->age);
newp->next = NULL;
p->next = newp;
p = newp;
}

return L;

}

void del(node *L,int n)
{
node *p = L;
while(p->next != NULL)
{
if(p->next->age == n)
{
p->next = p->next->next;
}
else p = p->next;
}
}

void print(node *L)
{
node *p = L->next;
while(p)
{
printf("%d %s %c %d\n",p->num,p->name,p->sex,p->age);
p = p->next;
}
}
void main()
{
node *L1 = creat();

int n;
printf("要删除的年龄:");
scanf("%d",&n);
del(L1,n);
print(L1);

system("pause");

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qq_33747112
    李我远点 2017-02-28 07:07
    已采纳

    #include
    #include
    #include
    #include

    typedef struct student
    {
    int num;
    char name[20];
    char sex;
    int age;
    struct student *next;
    }node;

    node* creat(void)
    {
    node * L,*p;
    L = (node*)malloc(sizeof(node));
    L->next = NULL;
    p = L;
    int n;
    printf("人数:");
    scanf("%d",&n);
    for(int i = 0;i < n;i++)
    {
    node newp = (node)malloc(sizeof(node));

        scanf("%d %s %c %d",&newp->num,newp->name,&newp->sex,&newp->age);
        newp ->next = NULL;
    
        p->next = newp;
        p = newp;
    
        //newp->next = L->next;
        //L->next  = newp;
    }
    
    return L;
    

    }

    void del(node *L,int n)
    {
    node *p = L;
    while(p->next != NULL)
    {
    if(p->next->age == n)
    {
    p->next = p->next->next;
    }
    else p = p->next;
    }
    }

    void print(node *L)
    {
    node *p = L->next;
    while(p)
    {
    printf("%d %s %c %d\n",p->num,p->name,p->sex,p->age);
    p = p->next;
    }
    }
    void main()
    {
    node *L1 = creat();

    int n;
    printf("要删除的年龄:");
    scanf("%d",&n);
    del(L1,n);
    print(L1);
    
    system("pause");
    

    }

    点赞 评论
  • zqbnqsdsmd
    zqbnqsdsmd 2017-02-28 03:12

    看下代码的问题,sex这个单词不好,一般是和那个有关的,应该用gender

    点赞 评论
  • u011261430
    仅仅学会简单 2017-02-28 03:51

    我试了下,好像可以啊,有可能是你输入那里的问题,scanf("%d,%s,%c,%d",&newp->num,newp->name,&newp->sex,&newp->age);

    点赞 评论
  • qq_33747112
    李我远点 2017-02-28 05:55

    为什么输出结果是这样的图片说明

    点赞 评论

相关推荐