問題 D DS順序表之迴圈移位

2021-10-21 15:08:13 字數 1993 閱讀 2761

問題 d: ds順序表之迴圈移位

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

順序表的移位是迴圈移位,例如順序表: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

輸出第一行輸出建立後,順序表內的所有資料,資料之間用空格隔開

第二行輸出第一次移位操作後,順序表內的所有資料,資料之間用空格隔開

第三行輸出第二次移位操作後,順序表內的所有資料,資料之間用空格隔開

樣例輸入

511 22 33 44 55

0 21 4

樣例輸出

11 22 33 44 55

33 44 55 11 22

44 55 11 22 33

#include

#include

#include

#include

using

namespace std;

#define ok 0

#define error -1

class

seqlist

~seqlist()

intlist_size()

;//獲取順序表的實際長度

intlist_insert

(int i,

int item)

;//插入乙個元素

void

list_sort()

void

list_display()

;void

list_display2()

cout << endl;

}void

list_display3()

cout << endl;

}void

dirlen2

(int dir,

int len)

}else}}

void

dirlen3

(int dir,

int len)

}else}}

};int seqlist::

list_size()

int seqlist::

list_insert

(int i,

int item)

for(

int q = size; q > i -

1; q--

) list[i -1]

= item;

size++

;return ok;

}void seqlist::

list_display()

cout << endl;

}int

main

(void

) p.

list_display()

;int direct,lenth;

cin >> direct >> lenth;

p.dirlen2

(direct, lenth)

; p.

list_display2()

; cin >> direct >> lenth;

p.dirlen3

(direct, lenth)

; p.

list_display3()

;return0;

}

DS順序表之迴圈移位

題目描述 順序表的移位是迴圈移位,例如順序表 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,...

DS順序表之迴圈移位

題目問題 l ds順序表之迴圈移位 時間限制 1 sec 記憶體限制 128 mb 提交 657 解決 403 提交 狀態 討論版 題目描述 順序表的移位是迴圈移位,例如順序表 1,2,3,4,5,6。如果左移1位,即原來的頭元素移動到末尾,其它元素向左移1位,變成2,3,4,5,6,1。同理,如果...

字串 迴圈移位問題

字串迴圈移位問題是面試中比較容易遇到的,就是輸入乙個字串和乙個整數,原地輸出移位後的字串。不同的考官可能對程式的具體要求不同,這裡要求空間複雜度為o 1 這裡給出兩種解答方法。1 將移動n位看做 每次移動一位,共操作n次 這是一種化整為零的思維方法。只要能想到這一步,相信下面的 就不難寫出了 1 v...