社区讨论

求助,单链表 归并排序出现的问题

学术版参与者 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 条回复,欢迎继续交流。

正在加载回复...