题解 | #句子逆序#
句子逆序
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3
#include <stdio.h>
#include <stdlib.h>
struct Sentense
{
char **words;
char * str;
unsigned short length;
int top;
int strCount;
};
int main() {
struct Sentense sentense;
sentense.top=-1;
sentense.strCount=0;
sentense.length=100;
sentense.words=(char **)malloc(sentense.length*sizeof(char *));
sentense.str = (char*)malloc(1000*sizeof(char));
while(1)
{
char c=getchar();
static unsigned short wordCount=0;
if(c!=' '&&c!='\n')
{
wordCount++;
sentense.str[sentense.strCount++]=c;
}
else
{
wordCount++;
sentense.str[sentense.strCount++]='\0';
//如果堆栈不够大,拓展堆栈
if(sentense.top>=sentense.length-1){
sentense.length+=100;
sentense.words = (char **)realloc(sentense.words, sentense.length*sizeof(char *));
}
sentense.words[++sentense.top]=sentense.str+sentense.strCount-wordCount;
wordCount = 0;
if(c=='\n')
break;
}
}
while(sentense.top>=0)
{
printf("%s ",sentense.words[sentense.top--]);
}
return 0;
}
查看13道真题和解析
网易游戏公司福利 548人发布