順序表的移位是迴圈移位,例如順序表:1,2,3,4,5,6。如果左移1位,即原來的頭元素移動到末尾,其它元素向左移1位,變成2,3,4,5,6,1。同理,如果右移1位,即原來的尾元素移動到頭,其它元素向右移1位,變成6,1,2,3,4,5。以下是移位的多個例子:
原資料:1,2,3,4,5,6
左移3位:4,5,6,1,2,3,與原資料對比
右移4位:3,4,5,6,1,2,與原資料對比
請編寫程式實現順序表的迴圈移位操作
輸入
第1行輸入n表示順序表包含的·n個資料
第2行輸入n個資料,資料是小於100的正整數
第3行輸入移動方向和移動的位數,左移方向為0,右移方向為1
第4行輸入移動方向和移動的位數,左移方向為0,右移方向為1
輸出
第一行輸出建立後,順序表內的所有資料,資料之間用空格隔開
第二行輸出第一次移位操作後,順序表內的所有資料,資料之間用空格隔開
第三行輸出第二次移位操作後,順序表內的所有資料,資料之間用空格隔開
樣例輸入
5 11 22 33 44 55
0 21 4
樣例輸出
11 22 33 44 55
33 44 55 11 22
44 55 11 22 33
元素位移後新的位置可以用 ((i-dis)+len)%len 確定,其中i是當前元素下標,dis是位移量,len是陣列長度。
紅字部分的作用是當對負數取模時結果仍舊是乙個負數,取模是負無窮取餘數。
舉個例子,(-4)% 7 = -4
因此 +len 來使得元素左移或右移後超出合理位置的情況發生時,讓它重新回到隊首或隊尾。
#include using namespace std;
class seqlist
seqlist(int _len)
void insert(int index,int val)
else
cout<<"error"<0 && index<=len)
void consecutive_del()
}
mysql迴圈移位 左迴圈移位
例項十三 左迴圈移位 方法 result n 32 k 1 b 將n的左端的k位先放到b中的低位中。b n 32 k 2 c 將n左移k位,起右邊低位k位補0。c n 3 將b和c進行或操作.解釋 原數 1011 1100 右移k位 0000 0010 將原數高位的10 移到最低位儲存 方法中的b ...
陣列迴圈移位
陣列迴圈移位 對於存有n個整數的陣列,將其向左迴圈移動k個位置,x0,x1,xn 1 變換為 xk,xk 1,xn 1,x0,x1,xk 1 最直接的方法就是每次將首位的數放到乙個臨時的整型變數中,後面n 1個數一次左移,這樣需要k次才能完成,而每次的複雜度是o n 因此總共其複雜度是o k n 一...
陣列迴圈移位
題目 設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求複雜度為o n 且只允許使用兩個變數 思考問題 1 考慮原始解法 直接迴圈移動陣列k次,則演算法複雜度為0 n k 使用額外兩個變數完成,顯然複雜度依賴於k的值,如果k n,則演算法複雜度大於或等於o n 2 2 考慮改進 原始演算法複...