求助,单链表 归并排序出现的问题
  • 板块学术版
  • 楼主王宏宇11
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/4/23 16:08
  • 上次更新2023/10/28 03:03:10
查看原帖
求助,单链表 归并排序出现的问题
123168
王宏宇11楼主2022/4/23 16:08
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,按降序排列时会出现问题,求助大佬

2022/4/23 16:08
加载中...