以下是引用翼碎在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是释放链表元素的函数。