逆序一段文本算法

本文介绍了一个使用C++实现的字符串栈数据结构,并演示了如何利用该栈来处理和存储从给定文本中提取的单词。通过分析文本中的字符,将完整的单词压入栈中,最终实现了逆序打印所有单词的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值