| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 321 人关注过本帖
标题:帮看看有序单链表的合并为什么合并不成功
只看楼主 加入收藏
月亮上的人
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-6-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
帮看看有序单链表的合并为什么合并不成功
  #include<iostream>
#include<list>
#include<algorithm>
#include<vector>
#include<conio.h>
using namespace std;
bool youxu(list<int>&ls){
    list<int>::iterator it1=ls.begin(),it2=++it1;it1=ls.begin();
    if(*it1<*it2){
       while(it2!=ls.end()){
           if(*it1>*it2)
           return false;
           ++it1;
           ++it2;
       }
       return true;
   }
   else if(*it1>*it2){
       while(it2!=ls.end()){
           if(*it1<*it2)
           return false;
           ++it1;
           ++it2;
       }
       return true;
   }
   else{}
}
       void hebing(list<int>&ls1,list<int>&ls2){
           vector<int>v;
           list<int>::iterator it2=ls2.begin(),it1=ls1.begin();
           while(it1!=ls1.end()){
               v.push_back(*it1);
               ++it1;
           }
           while(it2!=ls2.end()){
               v.push_back(*it2);
               ++it2;
           }
           sort(v.begin(),v.end());
           ls1.clear();
           vector<int>::iterator i=v.begin();
           for(;i!=v.end();++i)
           ls1.push_front(*i);
       }
       void show(list<int>&ls){
           cout<<"链表元素为:";
           list<int>::iterator it=ls.begin();
           for(;it!=ls.end();++it)
           cout<<*it<<" ";
       }
int main(){
    int n;
    list<int>ls1,ls2;
    cout<<"有序输入链表1数据-1结束: ";
    while(cin>>n&&n!=-1)
    ls1.push_back(n);
    while(youxu(ls1)==false) {
        cout<<"请<有序>输入链表1数据-1结束: ";
        ls1.clear();
        while(cin>>n&&n!=-1)
        ls1.push_back(n);
    }
    show(ls1);
    cout<<endl;
    cout<<"有序输入链表2数据-1结束: ";
    while(cin>>n&&n!=-1)
    ls2.push_back(n);
    while(youxu(ls2)==false) {
        cout<<"请<有序>输入链表1数据-1结束: ";
        ls2.clear();
        while(cin>>n&&n!=-1)
        ls2.push_back(n);
    }
    show(ls2);
    cout<<endl;
    hebing(ls1,ls2);
    cout<<"有序合并后为:";
    show(ls1);
     return 0;
}


  
搜索更多相关主题的帖子: include return false 
2015-06-25 09:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:20 
不会C/C++不是过错,但这么大人了,连个问题都不会问,那就……

起码你应该告诉别人你输入了什么。
我输入 1 3 5 -1 和 2 4 6 -1,输出 6 5 4 3 2 1,你说“并不成功”,那你告诉我应该输出什么才算成功?

另外,无关的代码一大堆,就不能删除 bool youxu(list<int>&ls),然后 main 中直接
list<int> ls1 = ……
list<int> ls2 = ……
hebing(ls1,ls2);
show(ls1);
?

BTW:你的这个算法你动脑想过没?你告诉我你的void hebing(list<int>&ls1,list<int>&ls2)函数中为什么必须传入有序链表?起码在你的算法中是无所谓有序不有序的。
2015-06-25 09:41
月亮上的人
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-6-23
收藏
得分:0 
要求输入的是有序的,输出后是按正序输出的
2015-06-25 09:56
快速回复:帮看看有序单链表的合并为什么合并不成功
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045375 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved