[此贴子已经被作者于2005-7-3 17:33:28编辑过]
----------------解决方案--------------------------------------------------------
已知有(a1,a2,…,an-1,an)个数据存放在数组A中,请设计一个算法,将数组A中的元素转换为(an,an-1,…,a2,a1)顺序,要求转换过程中用尽可能少的辅助空间,用C语言描述该算法。
----------------解决方案--------------------------------------------------------
给数组两个指针,分别指向数组的头(头指针自加)和尾(尾指针自减),然后对头尾指针的值进行互换,如果想一个辅助的空间都不用的话,那就利用这个方法吧a+=b;b=a-b;a-=b;如果只利用一个辅助空间的话,就temp=a;a=b;b=temp;
----------------解决方案--------------------------------------------------------
多谢高手了,能不能给个程序段啊,嘿嘿
----------------解决方案--------------------------------------------------------
王小祺,你好象有点懒哦!~
----------------解决方案--------------------------------------------------------
不是啊,我想能有更多的方法就好了,请谁帮帮忙呀,越简单的程序越好!!!!
----------------解决方案--------------------------------------------------------
我没有用指针: ------------------------------------------ # include "stdio.h"
void main(void) { int i,temp; int a[100]; //设数组元素为100个
for(i=0;i<100;i++) { a[i]=i; printf("%d\t",a[i]); } for(i=0;i<100/2;i++) { temp=a[i]; a[i]=a[99-i]; a[99-i]=temp; } printf("\n"); for(i=0;i<100;i++) printf("%d\t",a[i]); }
----------------解决方案--------------------------------------------------------
那用指针和用数组,哪个空间大啊?
----------------解决方案--------------------------------------------------------
高手,我这样改,哪里有错啊??? # include "stdio.h"
void main(void) { int n,i,temp; int a[n]; printf("please input n:\n"); scanf("%d\n",n); for(i=0;i<n;i++) { printf("please input a[%d]:\n",i); scanf("%d\n",a[i]); }
for(i=0;i<100;i++) { a[i]=i; printf("%d\t",a[i]); } for(i=0;i<100/2;i++) { temp=a[i]; a[i]=a[99-i]; a[99-i]=temp; } printf("\n"); for(i=0;i<100;i++) printf("%d\t",a[i]); }
----------------解决方案--------------------------------------------------------
你仔细查阅一下数组的定义与使用规则吧。
----------------解决方案--------------------------------------------------------