zoukankan      html  css  js  c++  java
  • 交换两个线性表位置(或循环移动数组元素)

    在一个数组中放入两个线性表,一前一后,交换两个线性表位置。这里使用一个线性表,前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
    ",s.length);
        for(int i = 0;i < s.length;i ++) {
            printf("%d ",s.data[i]);
        }
        putchar('
    ');
    }
    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;
    }
  • 相关阅读:
    [git] git 的基本认知
    [Java] Java IO Files
    [Java] Java IO 概况
    [Java] JavaMail 发送带图片的 html 格式的邮件
    [Java] HashMap 导致的高 CPU 使用率
    [Struts] Hello World Demo
    [Hibernate] 注解映射例子
    [Hibernate] List 映射例子
    cmd的xcopy命令
    wpf custom control
  • 原文地址:https://www.cnblogs.com/8023spz/p/11838444.html
Copyright © 2011-2022 走看看