数据结构|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,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
注意:移动操作是针对上一次移动后的结果进行的
输出 第一行输出创建后,顺序表内的所有数据,数据之间用空格隔开
第二行输出第一次移位操作后,顺序表内的所有数据,数据之间用空格隔开
第三行输出第二次移位操作后,顺序表内的所有数据,数据之间用空格隔开
样例输入 【数据结构|DS顺序表之循环移位】5
11 22 33 44 55
0 2
1 4
样例输出 11 22 33 44 55
33 44 55 11 22
44 55 11 22 33
#include using namespace std; #define OK 1 #define ERROR 0class SeqList {private: int *list,maxsize,size; public: //构造函数 SeqList(int n) {maxsize=1000; size=n; list=new int [maxsize]; for(int i=0; i>list[i]; } } //循环移位 void shift(int d,int s) {int *newList=new int[size]; if(d==0){ s=-s; } for(int i=0; i; i++) {newList[(i+s+size)%size]=list[i]; } for(int i=0; i; i++) {list[i]=newList[i]; } delete []newList; } //打印输出 void list_show() {for(int i=0; i; i++) {cout<>n; SeqList s(n); s.list_show(); cin>>direction>>step; s.shift(direction,step); s.list_show(); cin>>direction>>step; s.shift(direction,step); s.list_show(); return 0; }

    推荐阅读