顺序表_循环左移
来源:互联网 发布:网络空间的定义 编辑:程序博客网 时间:2024/06/06 08:52
顺序表的构造、插入、扩展、查找、删除、遍历这 6 种操作。一种新的操作:循环左移。
对于顺序表 L=(a_0, a_1, …, a_{n-1})L=(a0,a1,…,an−1),循环左移 k位意味着将顺序表变为 L^k=(a_k, a_{k+1}, …, a_{n-1}, a_0, a_1, …, a_{k1})
Lk=(ak,ak+1,…,an−1,a0,a1,…,ak−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)ai (0≤ai≤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
- 顺序表_循环左移
- 面试题42反转单词顺序VS左旋字符串(循环左移字符串)
- 数据结构_线性表_顺序队列_循环队列_链队列
- 字符串循环左移
- 循环左移数组
- 循环左移数组
- 循环左移数组
- 循环左移字符串
- 数组循环左移
- 1. 循环左移
- 循环左移数组
- 循环左移字符串
- 字符串循环左移
- 字符串循环左移
- 循环左移字符串
- 字符串循环左移
- 数组循环左移
- 字符串循环左移
- mysql 密码变更变化(2)
- 批处理大量的txt文件
- 在C++遇到有些关键字或者函数被弃用的情况,比如xxx was declared deprecated
- iOS开发之移动直播技术秒开、直播优化经验、直播问题解析、直播知识解惑
- Linux编程基础——GDB(设置断点)
- 顺序表_循环左移
- IOS改变TABBAR高度、背景颜色
- Python中pass、continue、break、exit()的区别
- 0x02虚函数分析
- Android 混淆问题
- HashMap实现原理及源码分析
- 异或运算实现简单的字符串加密和解密
- leetcode03-Longest Substring Without Repeating Characters之Java版本
- hadoop安装01