| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 306 人关注过本帖
标题:删除节点为什么不能输入0?
只看楼主 加入收藏
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
删除节点为什么不能输入0?
建立了链表,如果输入其他数字都可以判断是否有这个编号,但是输入0的时候
如果没有编号为0的节点,就会删除最后一个节点。
这是为什么呢?
2014-04-13 17:51
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:10 
你贴上你的程序让大家看看,才好帮你。
2014-04-13 19:37
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
收藏
得分:0 
struct Student * Delete(struct Student *p)
{
    struct Student * p0, *p1;
    int i;
    printf("Please enter a integer to number for delete sequence.\n");
    while (scanf("%d", &i) !=1 )
    {
        while (getchar()!='\n')
            continue;
        printf("Please enter a integer again!\n");
    }
    if (i == p->sequence)
    {
        p0 = p->next;
        printf("Delete NO.%d!\n", i);
        return p0;
    }
    p0 = p;
    while (i != p->sequence && p->next != NULL)
    {
        p1 = p;
        p = p->next;
    }
    if (p->sequence == i)
    {
        p1->next = p->next;
        printf("Delete NO.%d!\n", i);
    }
    else
        printf("You enter is error!Try again!\n");
    return p0;
}
2014-04-14 03:03
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
收藏
得分:0 
struct Student * Delete(struct Student *p)
{
    struct Student * p0, *p1;
    int i;
    printf("Please enter a integer to number for delete sequence.\n");
    while (scanf("%d", &i) !=1 )
    {
        while (getchar()!='\n')
            continue;
        printf("Please enter a integer again!\n");
    }
    if (i == p->sequence)
    {
        p0 = p->next;
        printf("Delete NO.%d!\n", i);
        return p0;
    }
    p0 = p;
    while (i != p->sequence && p->next != NULL)
    {
        p1 = p;
        p = p->next;
    }
    if (p->sequence == i)
    {
        p1->next = p->next;
        printf("Delete NO.%d!\n", i);
    }
    else
        printf("You enter is error!Try again!\n");
    return p0;
}
2014-04-14 03:03
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你的函数只能删除一个节点,输入时的while 是不需要的,去掉那个while 就行了。如果想删除多个,底下部分放在循环之内。
struct Student * Delete(struct Student *p)
{
    struct Student * p0, *p1;
    int i;
    printf("Please enter a integer to number for delete sequence.\n");
    scanf("%d", &i);
    if (i == p->sequence)
    {
        p0 = p->next;
        printf("Delete NO.%d!\n", i);
        return p0;
    }
    p0 = p;
    while (i != p->sequence && p->next != NULL)
    {
        p1 = p;
        p = p->next;
    }
    if (p->sequence == i)
    {
        p1->next = p->next;
        printf("Delete NO.%d!\n", i);
    }
    else
       printf("学号不再其中!\n");
    return p0;
}
2014-04-14 13:02
快速回复:删除节点为什么不能输入0?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046254 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved