以下是引用翼碎在2012-9-12 22:37:17的发言:
这是我自己写的一个将链表元素按从小到大排列的一个函数,但是每次调用的时候都会弹出来一个“已停止工作”的对话框,不知道问题出在哪里,请大家帮个忙,谢了~~~void array(struct Node *head)
{
    struct Node *p1,*q,*f;
    struct Node *head2,*p2;
    p1 = head;
    p1 = p1->next;
    head2 = p2 = (struct Node *)malloc(sizeof(struct Node));
    head2->next = NULL;
    while(p1 != NULL)
    {
        q = (struct Node *)malloc(sizeof(struct Node));
        q->num = p1->num;
        if(head2 = NULL)//通常写比较条件的时候写成 NULL == head2 的形式,因为对常量赋值是不被允许的,即使少写个等号编译的时候会报错的
        {
            head2->next = q;
        }
        p2 = head2;
        while(p2->next != NULL && q->num > p2->next->num)
        {
            p2 = p2->next;
        }
        q->next = p2->next;
        p2->next = q;
        f = p1;
        p1 = p1->next;
        free(f);
    }
   
    display(head2);
    release(head2);
    return;
}display是打印链表元素的函数,这个检验过了没有问题的,release是释放链表元素的函数。
以下是引用翼碎在2012-9-12 22:37:17的发言:
这是我自己写的一个将链表元素按从小到大排列的一个函数,但是每次调用的时候都会弹出来一个“已停止工作”的对话框,不知道问题出在哪里,请大家帮个忙,谢了~~~void array(struct Node *head)
{
    struct Node *p1,*q,*f;
    struct Node *head2,*p2;
    p1 = head;
    p1 = p1->next;
    head2 = p2 = (struct Node *)malloc(sizeof(struct Node));
    head2->next = NULL;
    while(p1 != NULL)
    {
        q = (struct Node *)malloc(sizeof(struct Node));
        q->num = p1->num;
        if(head2 = NULL)//通常写比较条件的时候写成 NULL == head2 的形式,因为对常量赋值是不被允许的,即使少写个等号编译的时候会报错的
        {
            head2->next = q;
        }
        p2 = head2;
        while(p2->next != NULL && q->num > p2->next->num)
        {
            p2 = p2->next;
        }
        q->next = p2->next;
        p2->next = q;
        f = p1;
        p1 = p1->next;
        free(f);
    }
   
    display(head2);
    release(head2);
    return;
}display是打印链表元素的函数,这个检验过了没有问题的,release是释放链表元素的函数。
以下是引用翼碎在2012-9-12 22:37:17的发言:
这是我自己写的一个将链表元素按从小到大排列的一个函数,但是每次调用的时候都会弹出来一个“已停止工作”的对话框,不知道问题出在哪里,请大家帮个忙,谢了~~~void array(struct Node *head)
{
    struct Node *p1,*q,*f;
    struct Node *head2,*p2;
    p1 = head;
    p1 = p1->next;
    head2 = p2 = (struct Node *)malloc(sizeof(struct Node));
    head2->next = NULL;
    while(p1 != NULL)
    {
        q = (struct Node *)malloc(sizeof(struct Node));
        q->num = p1->num;
        if(head2 = NULL)//通常写比较条件的时候写成 NULL == head2 的形式,因为对常量赋值是不被允许的,即使少写个等号编译的时候会报错的
        {
            head2->next = q;
        }
        p2 = head2;
        while(p2->next != NULL && q->num > p2->next->num)
        {
            p2 = p2->next;
        }
        q->next = p2->next;
        p2->next = q;
        f = p1;
        p1 = p1->next;
        free(f);
    }
   
    display(head2);
    release(head2);
    return;
}display是打印链表元素的函数,这个检验过了没有问题的,release是释放链表元素的函数。
以下是引用翼碎在2012-9-12 22:37:17的发言:
这是我自己写的一个将链表元素按从小到大排列的一个函数,但是每次调用的时候都会弹出来一个“已停止工作”的对话框,不知道问题出在哪里,请大家帮个忙,谢了~~~void array(struct Node *head)
{
    struct Node *p1,*q,*f;
    struct Node *head2,*p2;
    p1 = head;
    p1 = p1->next;
    head2 = p2 = (struct Node *)malloc(sizeof(struct Node));
    head2->next = NULL;
    while(p1 != NULL)
    {
        q = (struct Node *)malloc(sizeof(struct Node));
        q->num = p1->num;
        if(head2 = NULL)//通常写比较条件的时候写成 NULL == head2 的形式,因为对常量赋值是不被允许的,即使少写个等号编译的时候会报错的
        {
            head2->next = q;
        }
        p2 = head2;
        while(p2->next != NULL && q->num > p2->next->num)
        {
            p2 = p2->next;
        }
        q->next = p2->next;
        p2->next = q;
        f = p1;
        p1 = p1->next;
        free(f);
    }
   
    display(head2);
    release(head2);
    return;
}display是打印链表元素的函数,这个检验过了没有问题的,release是释放链表元素的函数。