若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2252: 翻转句子中单词的顺序(栈和队列)

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,361

题目描述

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。

输入

输入:
“I am a student.”

输出

输出:
“student. a am I”

样例输入

"You are unbreakable."

样例输出

"unbreakable. are You"

参考代码

#include<stdio.h>  
#include<malloc.h>
#include<string.h>
#define SEN 100  
struct sqstack 
{
    char *base;
    char *top;
    int size;
}
;
struct sqstack *initEmptyStack()   
/*构建空輚*/ 
{
    struct sqstack *p;
    p=(struct sqstack *)malloc(sizeof(struct sqstack));
    if(p!=NULL) 
    {
        p->base=(char *)malloc(sizeof(struct sqstack)*SEN);
        if(p->base!=NULL) 
        {
            p->top=p->base;
            p->size=SEN;
            return p;
        }
    } else
            free(p);
    return NULL;
}
char push(struct sqstack *p,char a)         
/*入栈*/ 
{
    *p->top++=a;
    return 0;
}
char gettop(struct sqstack *p)             
/*取栈顶元素*/ 
{
    if(p->base!=p->top)  
            return *(p->top-1);
    return 0;
}
char pop(struct sqstack *p)              
/*出栈*/ 
{
    return *(--p->top);
}
int main() 
{
    struct sqstack *p1,*p2;
    char c;
    p1=initEmptyStack();
    p2=initEmptyStack();
    while(scanf("%c",&c)!=EOF)
            push(p1,c);
    printf("%c",pop(p1));
    while(p1->base!=p1->top) 
    {
        while(gettop(p1)!=' '&&gettop(p1)!='"')
            push(p2,pop(p1));
        while(p2->base!=p2->top)
            printf("%c",pop(p2));
        printf("%c",pop(p1));
    }
    printf("n");
    return 0;  
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Dreams孤独患者 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist