试写一算法,实现顺序表的就地逆置。
4个回答
推荐于2018-02-27
展开全部
算法基本思想:将数组的第一个元素与最后一个交换,第二个与倒数第二个交换,第三个与倒数第三个交换,直到结束。其中,定义一个临时变量,以便交换之用。算法实现如下:
void reverse(int a[], int size)
{
int tmp;
for (int i = 0; i < size/2; ++i)
{
tmp = a[i];
a[i] = a[size-1];
a[size-1] = tmp;
}
}
void reverse(int a[], int size)
{
int tmp;
for (int i = 0; i < size/2; ++i)
{
tmp = a[i];
a[i] = a[size-1];
a[size-1] = tmp;
}
}
展开全部
算法基本思想:将数组的第一个元素与最后一个交换,第二个与倒数第二个交换,第三个与倒数第三个交换,直到结束。其中,定义一个临时变量,以便交换之用。算法实现如下:
void reverse(int a[], int size)
{
int tmp;
for (int i = 0; i < size/2; ++i)
{
tmp = a[i];
a[i] = a[size-1];
a[size-1] = tmp;
}
}
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-31
展开全部
void reverse(SqList &A)//顺序表的就地逆置{
k= A.length/2;
�0�2for(i=0,j=A.length-1;i<=k;i++,j--)�0�2�0�2�0�2�0�2
A.elem[i]<->A.elem[j];
}//reverse
void reverse(SqList &A)//顺序表的就地逆置
{
for(i=0,j=A.length-1;i<j;i++,j--)
�0�2�0�2 A.elem[i]<->A.elem[j];
}//reverse
k= A.length/2;
�0�2for(i=0,j=A.length-1;i<=k;i++,j--)�0�2�0�2�0�2�0�2
A.elem[i]<->A.elem[j];
}//reverse
void reverse(SqList &A)//顺序表的就地逆置
{
for(i=0,j=A.length-1;i<j;i++,j--)
�0�2�0�2 A.elem[i]<->A.elem[j];
}//reverse
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-31
展开全部
#include <stdio.h>
#define LENGTH 11
int main(void)
{
int a[LENGTH];
/*用来表示当前调换位置的变量*/
int i,j;
/*一个辅助调换的变量*/
int tmp;
printf("逆序前为:");
/*假定初始化一个线性表*/
for(i=0;i<LENGTH;i++){
a[i]=i;
printf("[%d]",a[i]);
}
printf("\n");
i=0;
j=LENGTH-1;
/*对调的终止条件为j比i大1(发生在偶数个元素的时候)
*或者j比i大2(发生在奇数个元素的时候)*/
while(1){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
if(j-i==1 || j-i==2 || j-i<=0){
break;
}
i++;
j--;
}
printf("逆序后为:");
for(i=0;i<LENGTH;i++){
printf("[%d]",a[i]);
}
printf("\n");
return 0;
}
#define LENGTH 11
int main(void)
{
int a[LENGTH];
/*用来表示当前调换位置的变量*/
int i,j;
/*一个辅助调换的变量*/
int tmp;
printf("逆序前为:");
/*假定初始化一个线性表*/
for(i=0;i<LENGTH;i++){
a[i]=i;
printf("[%d]",a[i]);
}
printf("\n");
i=0;
j=LENGTH-1;
/*对调的终止条件为j比i大1(发生在偶数个元素的时候)
*或者j比i大2(发生在奇数个元素的时候)*/
while(1){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
if(j-i==1 || j-i==2 || j-i<=0){
break;
}
i++;
j--;
}
printf("逆序后为:");
for(i=0;i<LENGTH;i++){
printf("[%d]",a[i]);
}
printf("\n");
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询