+ -
当前位置:首页 → 问答吧 → 是我错了还是turbo c有bug?

是我错了还是turbo c有bug?

时间:2010-07-19

来源:互联网

本帖最后由 liklstar 于 2010-07-19 12:15 编辑

#include <stdio.h>
struct intlink{
        int x;
        struct intlink *next;
};

getlowest (struct intlink *link)
/*get the node with lowest number and move the node to the head*/
{
        struct intlink *head, *head0;
        struct intlink *lowest, *lower;
       
        head = link;
        lowest = link;
        head0 = link;
        lower = link;
        while (head != NULL){
                if (head->x < lowest->x){
                        lowest = head;
                        lower = head0;
                }
                head0 = head;
                head = head->next;
        }
        lower->next = lowest->next;
        lowest->next = link;
        link = lowest;
}

main()
/*链表排序,每次得到链表中最小的一个节点并把它移动到当前链表的头。然后,再对剩余的链表排序*/
{
        struct intlink *linknode, *p;
       
        linknode = (struct intlink *)malloc(sizeof(struct intlink));
        linknode->x = 15;
        linknode->next = (struct intlink *)malloc(sizeof(struct intlink));
        p = linknode->next;
        (*p).x = 10;
        (*p).next = (struct intlink *)malloc(sizeof(struct intlink));
        p = p->next;
        p->x = 5;
        p->next = NULL;
        p = linknode;
        while (p != NULL){
                getlowest(p);
                p = p->next;
        }
        p = linknode;
        while (p != NULL){
                printf (" ---%d--- ", p->x);
                p = p->next;
        }
        getch();
}

结果是没有输出!

我调过了:输入正确、getlowest()也没有大毛病,但就是输出不了?!我觉得恐怕是指针出了问题,但我找不出来,或者是turbo C的bug?

作者: liklstar   发布时间: 2010-07-19

不要怀疑它,先怀疑自己。。

作者: rain_fish   发布时间: 2010-07-19

大哥帮忙找找问题!小弟实在是黔驴技穷了!

作者: liklstar   发布时间: 2010-07-19

这里死循环了
while (head != NULL){
                if (head->x < lowest->x){
                        lowest = head;
                        lower = head0;
                }
                head0 = head;
                head = head->next;
        }

作者: rain_fish   发布时间: 2010-07-19

这个错误很容易找吗,使个笨但是有效的方法,在每个语句后面,加printf();
打印每次执行结果。就知道在哪错了

作者: rune_zhang   发布时间: 2010-07-19



QUOTE:
这里死循环了
while (head != NULL){
                if (head->x < lowest->x){
                     ...
rain_fish 发表于 2010-07-19 12:42






老兄说得详细些好吗?在下初学C,不知道这里怎么死循环了?

作者: liklstar   发布时间: 2010-07-19

google
单链表 排序

作者: rain_fish   发布时间: 2010-07-19