回 帖 发 新 帖 刷新版面

主题:顺序表的就地逆置

今天才学C语言,老师让用C语言编一个顺序表的就地逆置,谁能说下怎么写吗?谢谢哈

回复列表 (共2个回复)

沙发

线性表的本地逆序可以用第一个元素和最末元素对调,第二个元素与倒数第二个元素对调.... 
关键是要已知顺序表的长度(即元素总个数)和控制对调操作的结束条件(考虑奇数个元素和偶 
数个元素的时候停止对调操作的条件).在写程序的时候线性表可以用一维数组代替. 

#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; 
}

板凳

谢谢哈

我来回复

您尚未登录,请登录后再回复。点此登录或注册