香香脆脆 2023-10-05 18:51 采纳率: 100%
浏览 3
已结题

逆置法元素位置exchange函数怎么写

img

img


我想问一下exchange函数中,如果前面元素个数大于后面len-m个元素,那互换的时候前面位置也放不开后面元素呀

  • 写回答

1条回答 默认 最新

  • sy-sy- 2023-10-07 14:22
    关注

    对于你的问题,可能是题目描述不清晰带来的误解
    exchange
    原地逆置算法是一种常见的算法,用于将数组中的元素逆置,也就是把第一个元素和最后一个元素交换,把第二个元素和倒数第二个元素交换,以此类推,直到整个数组逆序。
    用下面的例子说明如何通过三次逆置到达交换的目的
    12345678
    m为3
    第一次逆置
    321 45678
    第二次逆置
    321 87654
    第三次逆置
    45678123

    原帖代码如下

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXSIZE 1000005
    
    typedef struct
    {
        int data[MAXSIZE];
        int listSize;
    } seqlist;
    
    void init_list(seqlist *list, int len) // 初始化并创建顺序表
    {
        list->listSize = len;
        for (int i = 0;  i < list->listSize; i++)
        {
            scanf("%d", &list->data[i]);
        }
    }
    
    void exchange(seqlist *list, int n, int m) // 逆置函数
    {
        int i, j;
        for (i = n,j = m; i <= j; i++, j--)
        {
            int t = list->data[i];
            list->data[i] = list->data[j];
            list->data[j] = t;
        }
    }
    
    int main()
    {
        int len;
        seqlist* list;
        int t;
        list = (seqlist*)malloc(sizeof(seqlist));
        scanf("%d", &len);
        init_list(list, len);
        scanf("%d", &t);
        while(t--)
        {
            int m;
            scanf("%d", &m);
            // 注意数组下标
            exchange(list, 0, m-1);  // 逆置前m个
            exchange(list, m, list->listSize-1);  // 逆置后len-m个
            exchange(list, 0, list->listSize-1);  // 整体逆置
            for (int i = 0; i < list->listSize; i++)
            {
                if (i == list->listSize-1)
                {
                    printf("%d\n", list->data[i]);
                }
                else
                {
                    printf("%d ", list->data[i]);
                }
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月19日
  • 已采纳回答 10月11日
  • 创建了问题 10月5日

悬赏问题

  • ¥100 对接美团闪购医药接口相关问题
  • ¥15 嵌入式软件电子烟开发
  • ¥15 职场 Excel 查重问题
  • ¥20 multisim方波发生电路产生的波形异常,学校没讲模电就留了实验qwq
  • ¥15 求怎么用idea2021.3.2创建web项目并配置tomcat
  • ¥100 or-tools的相关问题
  • ¥15 有可能用平板通过拓展坞来烧录程序吗(keil5的那种)
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决