主题:顺序表的就地逆置
33261527
[专家分:0] 发布于 2008-09-16 19:53:00
今天才学C语言,老师让用C语言编一个顺序表的就地逆置,谁能说下怎么写吗?谢谢哈
回复列表 (共2个回复)
沙发
dtdlut [专家分:0] 发布于 2008-09-19 16:20:00
线性表的本地逆序可以用第一个元素和最末元素对调,第二个元素与倒数第二个元素对调....
关键是要已知顺序表的长度(即元素总个数)和控制对调操作的结束条件(考虑奇数个元素和偶
数个元素的时候停止对调操作的条件).在写程序的时候线性表可以用一维数组代替.
#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;
}
板凳
33261527 [专家分:0] 发布于 2008-09-22 18:40:00
谢谢哈
我来回复