码迷,mamicode.com
首页 > 移动开发 > 详细

交换两个线性表位置(或循环移动数组元素)

时间:2019-11-11 21:14:06      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:eve   turn   inpu   char   n个元素   clu   code   bsp   组元   

在一个数组中放入两个线性表,一前一后,交换两个线性表位置。这里使用一个线性表,前n个元素代表第一个线性表,后m个元素代表第二个线性表。

相当于把数组中元素循环左移n个,或者右移m个。

代码:

#include <stdio.h>
#define MAX 100
struct Sqlist{
    int data[MAX];
    int length;
}s;
void input(Sqlist *s) {
    printf("请输入元素个数:");
    scanf("%d",&s -> length);
    printf("请输入%d个元素:",s -> length);
    for(int i = 0;i < s -> length;i ++) {
        scanf("%d",&s -> data[i]);
    }
}
void print(Sqlist s) {
    printf("%d\n",s.length);
    for(int i = 0;i < s.length;i ++) {
        printf("%d ",s.data[i]);
    }
    putchar(\n);
}
void reverse_s(Sqlist *s,int l,int r) {
    while(l < r) {
        s -> data[l] ^= s -> data[r];
        s -> data[r] ^= s -> data[l];
        s -> data[l] ^= s -> data[r];
        l ++;
        r --;
    }
}
void swap_s(Sqlist *s,int n,int m) {
    reverse_s(s,0,n + m - 1);
    reverse_s(s,0,m - 1);
    reverse_s(s,m,n + m - 1);
}
int main() {
    input(&s);
    int n,m;
    printf("请输入n,m:");
    scanf("%d%d",&n,&m);
    swap_s(&s,n,m);
    print(s);
    return 0;
}

 

交换两个线性表位置(或循环移动数组元素)

标签:eve   turn   inpu   char   n个元素   clu   code   bsp   组元   

原文地址:https://www.cnblogs.com/8023spz/p/11838444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!