给排序添加一个判断为空或只有一个元素 添完就无法运行..有没有大佬看一下

韭菜盒子123 2020-05-23 02:17:31
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include <locale.h>

typedef struct Node
{
int data;
struct Node *next;
}LNode, *LinkList;

void QuickSort2(LinkList head, LinkList tail){
if(head == tail) //如果头指针为空或者链表为空,直接返回
return ;
//if (head->next == tail || head->next->next == tail)
//return;
int t;
LinkList p = head -> next;
LinkList small = head;
while( p != tail){
if(p -> data < head -> data){
small = small -> next;
t = small -> data;
small -> data = p -> data;
p -> data = t;

}
p = p -> next;
}
t = head -> data;
head -> data = small -> data;
small -> data = t;

QuickSort2(head, small);
QuickSort2(small -> next, tail);
}

void create_list(LinkList *L) {
int i;
int n;
LinkList head,p,q;

*L = ( struct Node *)malloc(sizeof(LNode));
p = *L;
head = NULL;
p->data = -1;
p->next = NULL;

printf("请输入您需要生成的结点个数:");
scanf("%d", &n);

for(i = 0; i < n; i++) {

q=(struct Node *)malloc(sizeof(LNode));
if (NULL==q) exit(1);
q->data=rand()%100;
q->next=NULL;
if (NULL==p) {
head=q;
p=head;
} else {
p->next=q;
p=q;

}

}}


void traverse_list(LinkList L) {
LinkList p = L->next;

while(NULL != p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return;
}

main(){
LinkList La = NULL;
clock_t start, finish;
double duration;

create_list(&La);
//printf("排序前:\n");
traverse_list(La);
//InitList(&La);
//start=clock();

QuickSort2(La,NULL);

//finish=clock();

//printf("排序后:\n");
traverse_list(La);

//duration = (double)(finish - start) / CLOCKS_PER_SEC;
//printf( "%f seconds\n", duration );

return 0;
}

完整代码都贴这了,想改的是函数注释的那一行
...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
韭菜盒子123 2020-05-23
  • 打赏
  • 举报
回复
引用 2 楼 Simple-Soft 的回复:
你这个创建也有问题吧?创建后能正常遍历出来吗?
可以正常遍历啊.
Simple-Soft 2020-05-23
  • 打赏
  • 举报
回复
你这个创建也有问题吧?创建后能正常遍历出来吗?
韭菜盒子123 2020-05-23
  • 打赏
  • 举报
回复
因为是带头结点的链表,所以肯定不能head==null这么判断啊,可是改完之后要怎么改程序啊..

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧