链表排序问题
这是我自己写的一个将链表元素按从小到大排列的一个函数,但是每次调用的时候都会弹出来一个“已停止工作”的对话框,不知道问题出在哪里,请大家帮个忙,谢了~~~程序代码:
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) { 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是释放链表元素的函数。