目的:使用STL中的vector模板,設計並實現順序表應用場合的一些簡單演演算法設計。
應用1:試設計一個演演算法,用盡可能少的輔助空間將順序表中前 m 個元素和後 n 個元素進行互換,即將線性表(a1,a2,…,am,b1,b2,…,bn) 改變成(b1,b2,…,bn,a1,a2,…,am)。
參考函數原型:template
void Exchange( vector &A,int m );// 本演演算法實現順序表中前 m 個元素和後 n 個元素的互換
第一行:待處理順序表的長度
第二行:待處理順序表的資料元素(資料元素之間以空格分隔)
第三行:逆置位置m
第一行:待處理順序表的遍歷結果
第二行:逆置結果
10
13 5 27 9 32 123 76 98 54 87
5
13 5 27 9 32 123 76 98 54 87
123 76 98 54 87 13 5 27 9 32
void realExchange(vector<Elemtype> &A,int left,int right)
{
//swap reverse the element between left and right
Elemtype temp;
while(left <= eight)
{
temp = A[left];
A[left] = A[right];
A[left] = temp;
left ++;
right --;
}
}
template<class Elemtype>
void Exchange(vector<Elemtype>& A,int m)
{
//reverse the whole vector
realExchange(A,0,A.size());
//reverse the element between 0 and m
realExchange(A,0,m);
//reverse the elements between m and A.size()
realExchange(A,m,A.size());
}