免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hanni
打印 上一主题 下一主题

颠倒字符串的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-11-02 14:34 |只看该作者
原帖由 ypxing 于 2007-11-2 08:52 发表
整个串倒序
然后再每个word倒序



2个指针搞定?

论坛徽章:
0
12 [报告]
发表于 2007-11-02 14:50 |只看该作者
其实可以定义一个栈,然后把每个单词压栈,再出来就OK了。
把这个栈可以定义一个倒序的连表,就是后面的结点在前面,然后从前向后输出就OK了。

论坛徽章:
0
13 [报告]
发表于 2007-11-02 16:51 |只看该作者


原帖由 iceviewer 于 2007-11-2 14:34 发表



2个指针搞定?

论坛徽章:
0
14 [报告]
发表于 2007-11-02 17:54 |只看该作者
实际上这题用递归来做的说,也很有意思,就是不太符合LZ的要求
main()
{
get_word();
printf("\n");
}

get_word()
{
  char c;
  c = getchar();
  if ( c != 10 )
    get_word();

  printf("%c",c);

  return;
}


[ 本帖最后由 doni 于 2007-11-2 17:57 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2007-11-02 18:29 |只看该作者
我也试着写一个
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void inverse_by_word(char *);

int
main(void)
{
    char str[] = "I am a boy\0";
    printf("before inverse:\n%s\n", str);
    inverse_by_word(str);
    printf("after inverse:\n%s\n", str);
   
    exit(0);
}

void
inverse_by_word(char *str)
{
    char c, flag; /* flag - new word flag */
    int i, len, length;

    c = flag = str[0];
    len = length = strlen(str);
   
    while (c != '\0') {
        if (c == ' ' || c == '\t' ||
            flag == ' ' || flag == '\t')
            len = strlen(str);
       
        for (i = 0; i < len; i++)
            str = str[i+1];
        str = c;

        flag = c;
        c = str[0];
    }

    for ( i = 0; i < length; i++)
        str = str[i+1];
    str = '\0';
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP