社区讨论
求助,单链表 归并排序出现的问题
学术版参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo8zdzf0
- 此快照首次捕获于
- 2023/10/28 03:03 2 年前
- 此快照最后确认于
- 2023/10/28 03:03 2 年前
CPP
linkstu merge_low(linkstu &left,linkstu &right,string s)//归并排序
{linkstu L=new stu;
linkstu Lp=L;
while(left&&right)//三门学科
{if(s.compare("math")==0)
{while(left&&right)
{if(left->math>right->math)
{Lp->next=left;
left=left->next;
}
else
{Lp->next=right;
right=right->next;
}
Lp=Lp->next;
}
}
else if(s.compare("china")==0)
{while(left&&right)
{if(left->china>right->china)
{Lp->next=left;
left=left->next;
}
else
{Lp->next=right;
right=right->next;
}
Lp=Lp->next;
}
}
else if(s.compare("eng")==0)
{while(left&&right)
{if(left->eng>right->eng)
{Lp->next=left;
left=left->next;
}
else
{Lp->next=right;
right=right->next;
}
Lp=Lp->next;
}
}
}
Lp->next=left==NULL?right:left;
return L->next;
}
linkstu sort_low(linkstu &L,string s)
{if(L->next==NULL) return L;
linkstu slow=L,fast=L;
while(fast&&fast->next)//快慢结点找中间结点
{fast=fast->next;
if(fast->next)
{fast=fast->next;
slow=slow->next;
}
}
linkstu mid=slow->next;
slow->next=NULL;
linkstu left=sort_low(L,s);
linkstu right=sort_low(mid,s);
return merge_low(left,right,s);
}
如此排序会将链表的头结点参与排序,要怎么做才能不包括头节点进行排序,头结点初始化数据为0 0 0,按降序排列时会出现问题,求助大佬
回复
共 3 条回复,欢迎继续交流。
正在加载回复...