首页 > 其他分享 >有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。

有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。

时间:2023-09-10 20:45:02浏览次数:46  
标签:函数 temp int 个数 整数 next 链表 tail

4,有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。

我的代码:

1.使用双向链表

void MoveDLink(DoubleList head, int m, int n) {
    /* 寻找原链表第n-m个节点 */
    DoubleList current = head, temp;
    for (int i = 0; i < n - m; i++) {
        current = current->next;
    }
    /* temp保存后m个数的首个数 */
    temp = current->next;
    /* 处理新链表尾部部分 */
    current->next = NULL;

    /* 找到原链表最后一个节点 */
    DoubleList tail = temp;
    while (tail->next) {
        tail = tail->next;
    }

    /* 处理新链表中间衔接部分 */
    tail->next = head->next;
    head->next->prior = tail;
    /* 处理新链表头部部分 */
    head->next = temp;
    temp->prior = head;

}

2.使用顺序表

void shiftArray(int arr[], int n, int m)
{
    int *temp = (int *)malloc(m * sizeof(int)); // 使用动态内存分配创建临时数组

    if (temp == NULL)
    {
        printf("内存分配失败\n");
        exit(1);
    }

    // 将最后m个元素保存到临时数组temp中
    for (int i = 0; i < m; i++)
    {
        temp[i] = arr[n - m + i];
    }

    // 向后移动前n-m个元素
    for (int i = n - 1; i >= m; i--)
    {
        arr[i] = arr[i - m];
    }

    // 将临时数组中的元素放回到数组的前面
    for (int i = 0; i < m; i++)
    {
        arr[i] = temp[i];
    }

    free(temp); // 释放临时数组的内存
}

标签:函数,temp,int,个数,整数,next,链表,tail
From: https://www.cnblogs.com/trmbh12/p/17691860.html

相关文章

  • MySQL数据库进阶 自定义函数
    自定义函数在MySQL中,您可以使用自定义函数来扩展数据库管理系统的功能。自定义函数允许您封装一段可重用的代码,并在查询和其他操作中调用它。以下是在MySQL中创建和使用自定义函数的一般步骤:1、创建自定义函数语法:CREATEFUNCTIONfunction_name(parameters)RETURNSreturn_t......
  • 无涯教程-JavaScript - DISC函数
    描述DISC函数返回有价证券的折现率。语法DISC(settlement,maturity,pr,redemption,[basis])争论Argument描述Required/OptionalSettlement证券的结算日期。证券结算日期是指在发行日期之后将证券交易给买方的日期。RequiredMaturity证券的到期日。到期日......
  • 无涯教程-JavaScript - DDB函数
    描述DDB函数使用双倍余额递减法或您指定的某些其他方法返回指定期间内资产的折旧。语法DDB(cost,salvage,life,period,[factor])争论Argument描述Required/OptionalCostTheinitialcostoftheasset.RequiredSalvage折旧结束时的价值(有时称为资产的残值)......
  • pixi.js 的头像制作功能【函数】
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><scriptsrc="https://cdn.jsdel......
  • 封装的函数小工具
    //部分为网上借用,以方便本人复查使用。//数字格式化如:123,456.78functionformatter_k(num){conststr=num.toString();//转字符串constval=str.replace(/\d+/,(n)=>{returnn.replace(/(\d)(?=(\d{3})+$)/g,($1)=>$1+",");});......
  • Golang 初识: 函数调用与定义丶字符串处理丶Json的处理
    一.基本函数调用与定义1packagemain23import(4"encoding/json"5"errors"6"fmt"7"math/rand"8"mylib/pkg/student"9"mylib/pkg/utils"10"sort"11......
  • 无涯教程-JavaScript - DB函数
    描述DB函数使用固定余额递减法返回指定期间内资产的折旧。语法DB(cost,salvage,life,period,[month])争论Argument描述Required/OptionalCostTheinitialcostoftheasset.RequiredSalvageThevalueattheendofthedepreciation(sometimescalledthe......
  • python系列之:深入理解函数、方法以及函数和方法的区别
    python系列之:python系列之:深入理解函数、方法以及函数和方法的区别一、函数二、函数参数1.必需参数2.关键字参数3.默认参数4.不定长参数三、函数和方法的区别一、函数Python定义函数使用def关键字,一般格式如下:def函数名(参数列表):函数体函数实际例子如下所示:defmax(a,......
  • 无涯教程-JavaScript - CUMIPMT函数
    描述CUMIPMT函数返回start_period和end_period之间的贷款累计利息。语法CUMIPMT(rate,nper,pv,start_period,end_period,type)争论Argument描述Required/OptionalRateTheinterestrate.RequiredNperThetotalnumberofpaymentperiods.RequiredPvThep......
  • 函数和条件控制
       ......