关闭

逆序一段文本算法

182人阅读 评论(0) 收藏 举报
#include <iostream>
#include <stdlib.h>
#include <assert.h>
#include <string.h>

struct stackNode
{
    stackNode(std::string s)
    {
        this->val=s;
        next=NULL;
    }
    std::string val;
    stackNode * next;
};

struct stringStack
{
    stringStack()
    {
        top=NULL;
    }
    bool isEmpty()
    {
        return (top==NULL);
    }
    stackNode * top;
    void push(std::string s)
    {
        stackNode * nd=new stackNode(s);
        if(top==NULL)
        {
            top=nd;
        }
        else
        {
            nd->next=top;
            top=nd;
        }
    }
    void pop()
    {
        if(top==NULL)
        {
            return;
        }
        else
        {
            stackNode *p=top;
            top=top->next;
            delete p;
        }
    }
    void printStack()
    {
        while(!isEmpty())
        {
            std::cout<<top->val<<std::endl;
            pop();
        }
    }
};

int main()
{
    stringStack sstk;
    std::string temp="";
    bool newWord=false;
    char * text="You are  son   of   a  bitch.";
    char *p=text;
    char c=*p++;
    while(c!='\0')
    {
        if(c==' ')
        {
            newWord=true;
        }
        else
        {
            newWord=false;
        }
        if(newWord==true)
        {
            if(temp.size()!=0)
            {
                sstk.push(temp);
                temp.clear();
            }
            c=*p++;
            continue;
        }
        else
        {
            temp.push_back(c);
            c=*p++;
        }
    }
    sstk.push(temp);
    sstk.printStack();
    temp.clear();
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:281961次
    • 积分:5919
    • 等级:
    • 排名:第4262名
    • 原创:293篇
    • 转载:75篇
    • 译文:0篇
    • 评论:5条
    最新评论