用栈的思想处理字符串倒置问题更清晰

如杭电acm题目

The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case contains a single line with several words. There will be at most 1000 characters in a line.
 
Output
For each test case, you should output the text which is processed.
 
Sample Input
3
olleh !dlrow
m'I morf .udh
I ekil .mca
 
Sample Output
hello world!
I'm from hdu.
I like acm.
Hint
Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.
 
Author
Ignatius.L

 我写的代码,还有地方能更精简

 

# include <stdio.h>

# include <string.h>

int main(){

 int top,num,i;

 char a[1001];  

char stack[1001];

 scanf("%d",&num);  

getchar();  

while(num--){   

gets(a);   

top=0;   

for(i=0;i<strlen(a)+1;i++){   

 if(a[i]==' '){     

while(top)     

 printf("%c",stack[--top]);     printf(" ");    }      

if(a[i]=='\0'){     

while(top)      

printf("%c",stack[--top]);     

printf("\n");     

break;    }    

if(a[i]!=' '&&a[i]!='\0')     

stack[top++]=a[i];

   }  

}  

return 0;

}

}

posted @ 2014-02-16 16:21  漏网的鱼  阅读(175)  评论(0编辑  收藏  举报