社区
C语言
帖子详情
考一个比较经典的问题(2)
zjxiaoyu
2005-07-13 05:12:44
将n个元素的数组向左旋转i个位置(循环旋转)。
比如abcdefg向左旋转3个位置就是defgabc。
写简单的代码实现。
...全文
674
21
打赏
收藏
考一个比较经典的问题(2)
将n个元素的数组向左旋转i个位置(循环旋转)。 比如abcdefg向左旋转3个位置就是defgabc。 写简单的代码实现。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
netfloator
2005-07-14
打赏
举报
回复
这道题如果用到临时空间就太简单了,题目也失去了意义。我在学数据结构的时候看到过这道题。
Willpro
2005-07-14
打赏
举报
回复
www.mark.com
boxban
2005-07-14
打赏
举报
回复
前面各位大虾作得都不错,但个别有些小纰漏:
1。memcpy/memmove 里面的数量是以“字节”为单位计算的,因此对于int类型,应该是元素数目*sizeof(int)
2。应该考虑i > n 的情形,因此在处理前需做一个简单的检查:i %= n; if (i > 0) ....
jixingzhong
2005-07-14
打赏
举报
回复
或者用楼主的办法::
char a[100]; //100 is the max len!!
inverse(int p,int q);
{
//a[p] 到 a[q] 逆向
}
main()
{
int i,n; //输入N(字符串的长度),I(定位)
//加入输入字符串语句
inverse(0, i-1);
inverse(i, n-1);
inverse(0, n-1);
//输出!!
}
jixingzhong
2005-07-14
打赏
举报
回复
void recl(int *c,int n,int i)//c这数组,n为数组大小,i为起始位置
{
int *buf = new int[n];
memmove(buf,c+i,n-i);
memmove(buf+n-i,c,i);
memmove(c,buf,n);
delete[] buf;
return;
}
呵呵 ,原理是一样的。
RoninBlade
2005-07-14
打赏
举报
回复
不怎么会c语言。
如果可以使用copy的话,不如把给定的数据串复制一个一样的 "abcde" + "abcde"
移动几位,就从第几位开始取子串。
zjxiaoyu
2005-07-14
打赏
举报
回复
讨论的差不多了。欢迎进入下一个话题
http://community.csdn.net/Expert/topic/4144/4144339.xml?temp=.2981989
(附:上一个话题。 ;-)
http://community.csdn.net/Expert/topic/4142/4142186.xml?temp=.5108454
)
zjxiaoyu
2005-07-14
打赏
举报
回复
我开这个帖子的愿意原意是:用memcpy反复移的方法,中间内存要求比较高。而用1个中间变量反复循环写的方式那些边界调起来很繁琐,不够清晰。而那个3次转置的代码写起来就非常清晰,用书上的话说就是“想出错都难”,而且执行效率跟前面的差不多。
况且,如果要扩展的话,这种方法在将向量abc转换成为cba时,或者更长的时候,特别有效。
hackingtruth
2005-07-14
打赏
举报
回复
学习
spyol
2005-07-14
打赏
举报
回复
受教了~
K
2005-07-13
打赏
举报
回复
学习中
迷你苑
2005-07-13
打赏
举报
回复
学习中
wq_princess
2005-07-13
打赏
举报
回复
void left_cycle( char *d, int num )
{
int i, j;
char temp;
int len = 0;
while( d[len] != '\0' )
len ++;
for( i = 0; i < num; i ++ )
{
temp = d[0];
for( j = 0; j < len - 1; j ++ )
{
d[j] = d[j+1];
}
d[j] = temp;
}
}
whatsouta
2005-07-13
打赏
举报
回复
用
malloc
char *a = (char *)malloc(sizeof(char)*n);
if (a == NULL) exit(1); //用之前最好检查一下有没有申请内存成功
...
...
free(a);
aiguozhou
2005-07-13
打赏
举报
回复
我是新手,请问如果用C语言写的话,也能象上面各位大哥说的这样
char *b=new char[n];
new 一个新的数组么??
shizhen
2005-07-13
打赏
举报
回复
icansaymyabc(学习与进步)
做得漂亮:)
FBIq
2005-07-13
打赏
举报
回复
#define N 10
void main(void)
{
char a[N]="risdfght",temp[N];
int i=0,j,n;
printf("转之前%s\n",a);
printf("到转几位(1~4)");
scanf("%d",&n);
for(j=strlen(a)-n;a[j]!=0;j++)
temp[i++]=a[j];
for(j=0;j<strlen(a)-n;j++)
temp[i++]=a[j];
temp[i]=0;
printf("\n转之后%s",temp);
getch();
return;
}
icansaymyabc
2005-07-13
打赏
举报
回复
void lrota(char *a,int n,int i)
{
char *b=new char[n];
strncpy(b,a,n);
for(int j=0;j<n;j++) a[j]=b[(j+i)%n];
delete []b;
}
int main(int argc, char* argv[])
{
char buf[]={"abcdefghijklmn"};
printf("%s\n",buf);
lrota(buf,sizeof(buf)-1,3);
printf("%s\n",buf);
return 0;
}
zjxiaoyu
2005-07-13
打赏
举报
回复
这种方法在将向量abc转换成为cba时,特别有效。
zjxiaoyu
2005-07-13
打赏
举报
回复
哦。不错。有了memcpy确实比自己实现循环简单多了。
那个,书上说了另外一种方法。就是:
比如前i个元素通称为向量a,后面的称为b。a先自己反转,就是第一个元素放最后,第二个放倒数第二。然后b自己反转。最后整个大数组再反转一次。
就是
inverse(0, i-1);
inverse(i, n-1);
inverse(0, n-1);
加载更多回复(1)
我是如何
一个
月通过软
考
的?
其实备
考
之初,我也会时常感到焦虑和恐惧,面对厚厚的教材和庞杂的知识点刚开始也会感到无从下手。软件设计师
考
试覆盖面广,包括数据结构、算法、操作系统、数据库、网络、软件工程等多个领域。再硬着头皮尝试阅读教材,很快发现这种方式效率低下,难以抓住重点。
一个
比较
经典
的
问题
今天在论坛看到
一个
很
经典
的
问题
,传说是哪个公司的笔试题,这样的题出得还真有水平..写到日志里面,以备回味.题目是这样的:有装满药片的5个广口瓶,其中
一个
瓶子的药片已经被污染。没污染的药每片10g,被污染的每片9g。 给你
一个
天平,如何只经过一次测量找出被污染的药瓶? 有
一个
答案得到了大家的认同:第
一个
瓶子拿一颗药,第二个瓶子拿两颗药,第三个瓶子拿三颗,第四个拿四颗,
走进递归
经典
——汉诺塔
问题
详解
目录传统艺能????过渡区????正片开始????
问题
????思路????实现???? 传统艺能???? 小编是大一菜鸟不赘述,欢迎大佬指点江山(QQ:1319365055) 此前博客点我!点我!请搜索博主 【知晓天空之蓝】点我!点我!请搜索博主 【知晓天空之蓝】或扫码进入! 乔乔的gitee代码库(打灰人 )欢迎访问,点我! (https://blog.51cto.com)感谢支持! 过渡区???? 现在是北京时间8:45,上午没有课,早操拉出去吹了个风,早饭买了个花卷带回寝室已经冷了,就上床肝博客了,
软
考
培训机构哪家
比较
好?各软
考
培训机构排名如何?
然而,线下班只能从侧面反映机构的实力,并且由于近两年的疫情原因,鼓励线上教学,反而不推荐报名线下班,因此对线下班的权重设置相对较低。学习资料的数量与质量,以及是否有相应的讲义,对我们的学习效率和学习质量有重要的影响。对于这样的机构,我们应该保持谨慎。从学生的角度来看,授课老师进行答疑能够提供更好的效果,因为这样能够与直播课内容进行有机的互动,进一步确保学习的连贯性。上课时间就是线上直播的时间,每家机构都不一样,有工作日晚上的,有周末晚上的,也有周末全天上课的,这个可以结合自己的实际情况挑选适合自己的。
基于 Verilog 的
经典
数字电路设计(2)
比较
器
在数字系统中,总是需要对一些数据进行
比较
,
比较
两个数值甚至多个数值的大小,然后进行排序,于是,数值
比较
器(Comparator)的逻辑电路便应运而生。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章