每日一题:数据结构oj题

1.给定一个数组,将数组的元素向右移动k个位置, 其中k 是非负整数

#include<windows.h>
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
		int k;
		printf("please input the value of k : \n");
		scanf("%d", &k); //输入k
		int ar[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		int ar2[10] = { 0 };
		int i = 0;
		for (i = 0; i < 10; i++)
		{
			ar2[i] = ar[i];
		} // 令ar2等于ar
		for (i = 0; i < 10 - k; i++) //0–10-k
		{
			ar[i] = ar[i + k];
		}
		for (i = 0; i < k; i++) //后面剩下几个
		{
			ar[10 - k + i] = ar2[i];
		}
		for (int i = 0; i < 10; i++) //打印
		{
			printf(" %d ", ar[i]);
		}
		system("pause");
		return 0;
}

2、对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231 ,那么其数组形式为[1,2,3, 1]。给定非负整数X的数组形式A,返回整数X+K的数组形式。

int *addToArrayFrom(int *A, int Asize, int k, int* returnSize)
{
	int size = Asize > 5 ? Asize + 1 : 5 + 1;
	int *ret = calloc(size, sizeof(int));
	//表示加完之后数据总位数
	int total = 0;//记录结果总共多少位
	//用数组中的每一位加k
	int retIdx = size - 1;//数组末尾
	while (Asize > 0)
	{
		k += A[Asize - 1];
		ret[retIdx--] = k % 10;
		k /= 10;
		total++;
		Asize--;
	}
	//如果K比A数组中数据长,k中还有剩余
	while (k > 0)
	{
		ret[retIdx--] = k % 10;
		k / 10;
		total++;
	}
	if (total < size)
	{
		memmove(ret, ret + (size - total), total*sizeof(int));
	}
	*returnSize = total;
	return ret;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值