顺序表_循环左移

来源:互联网 发布:网络空间的定义 编辑:程序博客网 时间:2024/06/06 08:52

顺序表的构造、插入、扩展、查找、删除、遍历这 6 种操作。一种新的操作:循环左移。

对于顺序表 L=(a_0, a_1, …, a_{n-1})L=(a​0,a​1,…,a​n−1),循环左移 k位意味着将顺序表变为 L^k=(a_k, a_{k+1}, …, a_{n-1}, a_0, a_1, …, a_{k1})
L​k=(ak,a​k+1,…,an−1,a​0,a1,…,a​k−1)。

比如:长度为 8 的顺序表 (1, 2, 3, 4, 5, 6, 7, 8)(1,2,3,4,5,6,7,8),循环左移 3 位后的结果为 (4, 5, 6, 7, 8, 1, 2, 3)(4,5,6,7,8,1,2,3)。

输入格式:

第一行输入两个整数 n(1 \leq n \leq 100)n(1≤n≤100) 和 k(0 \leq k \leq n)k(0≤k≤n),分别表示顺序表的元素个数和循环左移的位移量。

第二行一共 n 个整数 a_i(0 \leq a_i \leq 10000)a​i​​ (0≤a​i≤10000),表示顺序表中元素的值。

输出格式:

输出输出只有一行 n 个整数,顺序输出循环左移后顺序表中每个元素的值,每个元素之间用一个空格分隔。行末不要有多余空格。

样例输入

8 3
1 2 3 4 5 6 7 8
样例输出

4 5 6 7 8 1 2 3

using namespace std;#include <cstring>#include <iostream>class List{    private:    int length,size;    int *data;    public :    List(int ssize){        size=ssize;        length=0;        data=new int [size];    }    ~List(){        delete[] data;        length=0;        size=0;    }    int getLength(){        return length;    }    bool insert(int loc ,int value ){        if(loc < 0||loc>length){            return false;        }        if(length>=size){            expand();        }        for(int i=length;i>loc;i--){            data[i]=data[i-1];        }        data[loc]=value;        length++;        return true;    }    bool del(int loc){        if(loc<0||loc>length){            return false;        }        for(int i=loc+1;i<length;i++){            data[i-1]=data[i];        }        length--;        return true;    }    void print(){        for(int i=0;i<length;i++){            if(i>0)                cout<<" ";            cout<<data[i];        }        cout<<endl;    }    void lloop(int n){        n=n%length;        int *old_data=data;        data=new int[size];        for(int i=0;i<length-n;i++){            data[i]=old_data[i+n];        }        for(int i=0;i<n;i++){            data[length-n+i]=old_data[i];        }        delete[] old_data;    }    void expand(){        size=size*2;        int *old_data=data;        data=new int[size];        for(int i=0;i<length;i++){            data[i]=old_data[i];        }    }};int main(){    int count ,n;    cin>>count>>n;    int tmp;    List* list=new List(count+1);    for(int i=0;i<count;i++){        cin>>tmp;        list->insert(list->getLength(),tmp);    }    list->lloop(n);    list->print();}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗好像生病了怎么办 奶狗前腿断了怎么办 狗摔了一下瘸了怎么办 小狗腿突然瘸了怎么办 狗腿突然瘸了怎么办 狗腿受伤了肿了怎么办 狗狗缺钙腿变形怎么办 小狗腿摔骨折了怎么办 狗狗脚掌被压了怎么办 狗狗的脚骨折了怎么办 给猫灌药水呛到怎么办 吃佐匹克隆白天工作量降低怎么办? 手机网页不显示图片怎么办啊 页眉页脚同前节怎么办 小米8后盖缝隙大怎么办 狗子生了一个不动的小狗怎么办 狗狗肚子有脓包怎么办 小孩幼儿园数学不开窍怎么办 老百姓打仗了报警派出所不管怎么办 和人打架报案了怎么办 皇上死后的妃子怎么办 武警改制警卫系的学员怎么办 正团病故后住房怎么办 遇到保姆式领导该怎么办 限购房子卖不了怎么办 斑马线礼让行人行人不走怎么办 中国留学生签证在美国被取消怎么办 建行卡网银帐号密码输入错误怎么办 建行卡密码忘了怎么办? 银行卡k宝丢了怎么办 k宝密码锁住了怎么办 农业银行k宝锁了怎么办 银行卡办的网银卡丢了怎么办 事业单位考察档案丢了怎么办 当兵政审家访家里没人在家怎么办 士兵转业结婚材料不全怎么办 体育生训练腿疼怎么办 车底盘刮的严重怎么办 新车底盘被刮了怎么办 车侧面刮凹了怎么办 憋气久了想呕吐怎么办