一、顺序表逆置基本逻辑和实现

1.顺序表逆置的逻辑

将顺序表丛中间一分为二。

如果这个顺序表元素个数为i;

让第一个元素和最后一个元素互换,
第二个和倒数第二个元素互换;

i/2个元素和第i/2+1个元素互换。
交换结束以后,这就是个逆序的表了。

2.代码实现

void Reverse(Sqlist &L) {int temp;//辅助变量//这里L.Length/2会自动保留整数部分,所以,如果是奇数就没有任何影响了for (i = 0; i < L.Length/2; i++){temp = L.data[i];//数组下标是丛0开始的,所以最后一个元素的下标为L.length-1而不是L.lengthL.data[i] = L.data[L.length - 1 - i];L.data[L.Length - 1 - i] = temp;}
}

二、顺序表逆置的应用

问题描述
有一个序列,有n个元素:
a1, a2, a3, …,an-k+1,…, an-2, an-1, an;
将这个序列的顺序表移动成下面这样:
an-k+1,…,an-2, an-1, an, a1, a2, a3…

其实有点像把这个顺序表的元素按顺序“滚动”k个单位

1.解决思路

进行两轮逆置
首先将这个顺序表分成两段

【a1, a2, a3, …ak】【ak+1, … ,an-2, an-1, an】

第一轮逆置,将中括号里的两段内容分别逆置结果如下

【ak…,a3, a2, a1】【an, an-1, an-2 ,…, ak+1】

第二轮逆置,对整个顺序表逆置,结果如下

【ak+1,…,an-2,an-1, an, a1, a2, a3, …ak】

OK,现在其实已经完成咱么最开始的目的了。

2.代码实现

void Reverse(int R[], int from, int to){//这个函数传入的参数为/*要逆置的数组*要逆置这个数组那一段的开始下标from*要逆置那一段的结束下标to*/int i, temp;//temp为临时变量for (i=0; i < (to - from + 1)/2; i++){temp = R[from+i];R[from+i] = R[to - i];R[to - i] = temp;}
}void Converse(int R[], int k) {//n是这个顺序表的表长//k是我们要让这个表往前“滚动”n-k个单位int n = R.Length;Reverse(int R, 0, k-1);Reverse(int R, k, n-1);Reverse(int R, 0, n-1);
}

顺序表2:顺序表的逆置相关推荐

  1. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  2. 数据结构趣题——顺序表就地逆置

    利用原表的存储空间将顺序表(a1,a2,--,an)逆置为(an,an-1,---a1). 1: #include <stdio.h> 2: #include <stdlib.h&g ...

  3. 线性表顺序表---逆置所有元素

    1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void ...

  4. 顺序表创建和就地逆置

    顺序表创建和就地逆置 本题要求实现顺序表的创建和就地逆置操作函数.L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListReverse_Sq(Sq ...

  5. 6-1 顺序表创建和就地逆置 (10 分)

    6-1 顺序表创建和就地逆置 (10 分) 本题要求实现顺序表的创建和就地逆置操作函数.L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListRe ...

  6. SWUST OJ#942 逆置顺序表

    目录 题目 思路 代码 数据结构 STL 仿STL 题目 建立长度为n的顺序表,然后将表中的数据元素逆置,即若表中原来的数据元素序列为(a0,a1,a2,-,an),则逆置后的数据元素序列为(an,a ...

  7. 数据结构——顺序表的逆置

    题目:请写一个算法将顺序存储结构的线性表(a1...an)逆置为(an...a1),要求使用最少的附加空间. 解析:可以理解为一个线性表内的交换问题.当n为奇数时,将第一个元素与最后一个元素进行交换, ...

  8. 数据结构题:由逆置数组方法——逆置线性表L的所有元素

    前言 文章代码皆经Dev-C++ 5.11中测试无误,若有代码错误或表述不当,欢迎指正! 题目 输入一个数组,要求对该数组进行逆序然后输出. 当我们想对一个数组的所有元素进行逆置时,可以通过for() ...

  9. 线性表的顺序表示02

    //设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O( #include<stdio.h> #define MAX 5 //定义顺序表 typedef struct { ...

  10. 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

    学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...

最新文章

  1. python 基础——变量
  2. Android studio下将项目代码上传至github包括更新,同步,创建依赖
  3. 《SLIC Superpixels》阅读笔记
  4. Tomcat部署Web应用
  5. oracle怎么删除lob对象,Oracle系列:LOB大对象处理
  6. 实现输入提示 layui_ASP.NET Core SignalR :学习消息通讯,实现一个消息通知
  7. add_argument函数action参数的store_true==》在运行程序添加参数时直接输入变量名,可以省略对应的默认值True或者False
  8. php苹果app微信支付 无法返回,微信支付,php_微信支付APP返回-1怎么解决,微信支付,php,移动app - phpStudy...
  9. python如何做接口测试_python实现接口测试
  10. Systemd 入门教程:命令篇、实战篇
  11. Android导入第三方类库
  12. [渝粤教育] 西南科技大学 货币银行学 在线考试复习资料(2)
  13. 网络贷款系统完整版源码,thinkphp内核开发,安全可靠,定制网贷分销平台系统
  14. 大数据GIS系列(2)——空间大数据处理与分析案例
  15. 抢走Salesforce大客户,国产CRM靠的不是运气
  16. 微信模板消息发送帮助类
  17. python 经典图书排行榜_书榜 | 计算机书籍(1.7-1.13)销售排行榜
  18. Eureka报错“EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ”
  19. 《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案
  20. 【日记本砸】21.06.11-20 复杂的式子和角标只是一个符号一个标记而已

热门文章

  1. SQL注入攻击的实现和防止
  2. strcmp()函数的用法
  3. 数据库(Mysql)学习
  4. js中splice方法和slice方法
  5. 反相器,传输门,电平移位
  6. sop8封装的8脚蓝牙芯片KT6368A的低功耗测试说明
  7. java基础语法函数题(pta)
  8. TDengine学习笔记
  9. 完全用Linux工作-王垠
  10. emmc flash和nand flash