本文共 1488 字,大约阅读时间需要 4 分钟。
目的:使用STL的vector模板设计并实现顺序表应用场合的一些简单算法设计。
应用7:试设计一个算法,找出有序顺序表A(顺序表A中的数据元素的数据类型为int型)中两个元素和为给定值sum的所有元素对,并保持原有序表不变。
参考函数原型:
templatevoid Search_Pairs( vector &A, int sum );
第一行:有序顺序表A的长度
第二行:有序顺序表A的数据元素(数据元素之间以空格分隔)
第三行:给定值sum
第一行:顺序表A的遍历结果
第二行开始:符合条件的元素对(每一对占一行,数据元素之间以","分割)
如无符合条件的元素对,输出"NULL"
61 3 5 7 9 1510
1 3 5 7 9 15 1,93,7
#include#include using namespace std;/* description:show all the elements of the vector*/template void show(vector & A){ typename std::vector test = A; typename std::vector ::iterator iter; for(iter = test.begin();iter != test.end();iter ++) { cout<<*iter<<" "; } cout< void Search_Pairs( vector &A, int sum ){ typename std::vector ::iterator iterB = A.begin(); typename std::vector ::iterator iterE = A.end(); bool isFlag = false; while(iterB < iterE) { if((*iterB + *iterE) == sum) { isFlag = true; cout<<*iterB<<","<<*iterE< sum) { iterE --; } if((*iterB + *iterE) < sum) { iterB ++; } } if(!isFlag) { cout<<"NULL"< >Asize; vector A(Asize); int str; for(int i = 0 ;i < Asize;i ++) { cin>>str; A.at(i) = str; } int target; cin>>target; show(A); Search_Pairs(A,target); return 0;}
转载地址:http://xwwvb.baihongyu.com/