实训C++语言设计——接受两个非递减的线性表,并将它们合并为非递减的Lc

来源:互联网 发布:高校大数据平台 编辑:程序博客网 时间:2024/06/07 04:51

平台:VC++ 2005 测试通过!
.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件。
它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 twod.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
这些都是使用应用程序向导生成的 VC++ 文件故不列出
我只列出程序主要部分!

// MergeList_Vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

void MergeList_L( const vector<int>& La, const vector<int>& Lb, vector<int>& Lc);

int _tmain(int argc, _TCHAR* argv[])
{
 vector<int> La, Lb, Lc;
 cout <<"****************MergeList*******************"<<endl;
 cout <<"请输入La线性表的元素(元素间用空格隔开, -1为序列结束符): ";
 int input = -1;
 while ( (cin >> input) && ( input != -1 ))
           La.push_back(input);
   
 cout <<"请输入Lb线性表的元素(元素间用空格隔开, -1为序列结束符): ";
 input = -1;
 while ( (cin >> input) && ( input != -1 ))
           Lb.push_back(input);
 //对La,Lb的元素进行排序,得到两个非递减的线性表
    vector<int>::iterator pos;
    sort(La.begin(), La.end());
 cout <<"La排序后的内容: ";
 for ( int i  = 0; i < La.size(); i++)
       cout << La[i] <<" ";
 cout << endl;
 
 sort(Lb.begin(), Lb.end());
 cout <<"Lb排序后的内容: ";
 for ( int i  = 0; i < Lb.size(); i++)
       cout << Lb[i] <<" ";
 cout << endl;
 
 Lc.resize(Lc.size() + (La.size()+Lb.size()));

 MergeList_Sq(La, Lb, Lc);

 cout <<"Lc的内容: ";
 for ( int i  = 0; i < Lc.size(); i++)
       cout << Lc[i] <<" ";
 cout << endl;

 return 0;
}

//接受两个非递减的线性表,并将它们合并为非递减的Lc
void MergeList_Sq( const vector<int>& La, const vector<int>& Lb, vector<int>& Lc)
{
      vector<int>::const_iterator pa = La.begin();
   vector<int>::const_iterator pb = Lb.begin();
   vector<int>::const_iterator pa_last = La.end();
   vector<int>::const_iterator pb_last = Lb.end();  
         vector<int>::iterator pc = Lc.begin();

   //注意while循环中是pa < pa_last而不是pa <= pa_last
   //这是因为pa_last是指向向量中最末一个元素的下一个位置
   while ( (pa < pa_last) && (pb < pb_last) ){
              if( *pa <= *pb ) *pc++ = *pa++;
     else *pc++ = *pb++;
   }
   while ( pa < pa_last ) *pc++ = *pa++;
   while ( pb < pb_last ) *pc++ = *pb++;

原创粉丝点击