给定一个线性表,将其中的元素逆置:

for(int i=left,j=right;i<j;i++,j--){int temp = a[i];a[i] = a[j];a[j] = temp;
}

【例2-5】

(1)将以长度为n的数组的前端k(k<n)个元素逆序后移动到数组后端,要求原数组中数据不丢失,其余元素的位置无关紧要。

#include <stdio.h>
#include <stdlib.h>
#define N 10void reverse(int a[],int left,int right,int k){int temp;for(int i=left,j=right;i<right+k && i<j;i++,j--){temp = a[i];a[i] = a[j];a[j] = temp;}
}int main(){int a[N]={1,2,3,4,5,6,7,8,9,10},i;for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");reverse(a,0,4,1);for(i=0;i<N;i++)printf("%d ",a[i]);return 0;
}

(2)将以长度为n的数组的前端k(k<n)个元素保持原序移动到数组后端,要求原数组中的数据不丢失,其余元素的位置无关紧要。

#include <stdio.h>
#include <stdlib.h>
#define N 10void reverse(int a[],int left,int right,int k){int temp;for(int i=left,j=right;i<right+k && i<j;i++,j--){temp = a[i];a[i] = a[j];a[j] = temp;}
}void moveToEnd(int a[],int n,int k){reverse(a,0,k-1,k);reverse(a,0,n-1,k);
}int main(){int a[N]={1,2,3,4,5,6,7,8,9,10},i;for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");moveToEnd(a,5,2);for(i=0;i<N;i++)printf("%d ",a[i]);return 0;
}

(3)将以长度为n的数组的前端k(k<n)个元素保持原序移动到数组后端,要求原数组中的数据不丢失,其余元素的位置无关紧要。

#include <stdio.h>
#include <stdlib.h>
#define N 10void reverse(int a[],int left,int right,int k){int temp;for(int i=left,j=right;i<right+k && i<j;i++,j--){temp = a[i];a[i] = a[j];a[j] = temp;}
}void moveP(int a[],int n,int p){reverse(a,0,p-1,p);reverse(a,p,n-1,n-p);reverse(a,0,n-1,n);
}int main(){int a[N]={1,2,3,4,5,6,7,8,9,10},i;for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");moveP(a,5,2);for(i=0;i<N;i++)printf("%d ",a[i]);return 0;
}

【数据结构】 天勤 2.2.6 逆序问题相关推荐

  1. SDUT _2117 数据结构实验之链表二:逆序建立链表

    点击打开链接 数据结构实验之链表二:逆序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem D ...

  2. 数据结构实验之链表二:逆序建立链表

    题目描述 输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据. 输入 第一行输入整数N;: 第二行依次输入N个整数,逆序建立单链表. 输出 依次输出单链表 ...

  3. 数据结构:链表逆序输出

    数据结构(一):链表逆序输出 题目描述:创建一个链表,并将链表逆序输出,链表中以输入0作为结束 关键代码详解: 附:全部代码 #include<stdio.h> #include<s ...

  4. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  5. c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

    「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...

  6. 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表

    链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...

  7. 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现

    写在前面 不久前学习了数据结构线性表-数组-链表的相关知识,用C/C++语言实现了 单链表的系列相关操作 .见往期博客: 数据结构实验2_C语言_基于顺序表的非递减有序表的合并.线性表元素的增.删.改 ...

  8. c语言实现链表的逆序输出,C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  9. 【数据结构】单链表的逆序输出(两种方法)

    第一种方法:转换指针方向 即:将一个已经创建好的单链表进行指针域的改变 今天突然被问到单链表逆序的问题,弄了好久才看出别人的程序有啥问题,就重新写了一遍. 今天才在CSDN客户端上看到美团的面试题是冒 ...

最新文章

  1. 访问vue实例中的数据
  2. 主键primary key和唯一索引unique index
  3. boost::mp11::mp_eval_if_q相关用法的测试程序
  4. 东风日产数据服务有限公司借力服务网格,实现7层流量精细化管控
  5. js二维数组arr中表示读取第i行第j列的是:_c++ c语言 数组与字符串
  6. linux shell if -a 到-z参数含义
  7. 容器编排技术 -- Kubernetes StatefulSets
  8. mysql binary like,在MySQL中为BINARY LIKE操作建立索引
  9. CeBIT 2017热点:从5G到AI和物联网
  10. vmware不能resume问题,Collect Support Data,vmware.log
  11. 〖四信智慧方案〗LoRa无线技术在输电监测中的应用
  12. java解析8583报文55域
  13. 计蒜客 难题题库 205 图书ISBN号码
  14. 正文样式设置必看:你知道最好不要直接在正文样式中设置首行缩进吗
  15. [SARscape操作] 哨兵数据的导入 - 以Sentinel-1A为例
  16. java毕业生设计忆居民宿管理计算机源码+系统+mysql+调试部署+lw
  17. 软著 --- 注册与实名认证
  18. VP9编码(1)-- 简介
  19. camera驱动电源配置_Camera driverV4L2驱动架构介绍
  20. 阿里云服务器开放端口

热门文章

  1. unity 初次制作
  2. vscode配置go环境
  3. 课时 8:应用配置管理
  4. 用Fragment来代替过期的Tabhost和ActivityGroup
  5. java图书管理系统(界面版本)
  6. 即时通讯开发实时音频的混音如何在视频直播中实现
  7. 数据库管理工具DBeaver 如何连接 TDengine
  8. html的视频格式转换,盘点10个免费实用的 HTML 视频转换工具
  9. 万粉博主,回报社区,初心不改,砥砺前行
  10. Python3 知乎回答爬取+数据文本分析——如何判断一个人是否喜欢你 项目实战结论及步骤笔记