首页 > 编程语言 >链式栈回文字符串的判断(C++版)

链式栈回文字符串的判断(C++版)

时间:2024-03-27 20:02:29浏览次数:17  
标签:Status LinkStack Selemtype return C++ str 链式 define 回文

大家好我是大一新生,如果代码有啥错误和改进的地方可以评论哦,谢谢观念看;

#include<iostream>
#include<iomanip>
using namespace std;
#define ok 1
#define error 0
#define Selemtype char
#define Status int
#define MAXSIZE 100

typedef struct stack{//链式栈的结构 
    Selemtype data;
    struct stack *next;
}SqStack,*LinkStack;

Status InitStack(LinkStack &S)//初始化 
{
    S=NULL;
    return ok;
}

Status Push(LinkStack &S,Selemtype e)//入栈 
{
    LinkStack p;
    p=new SqStack;//申请一个新节点后将元素压入 
    p->data=e;
    p->next=S;
    S=p;
    return ok;
}

Status Pop(LinkStack &S,Selemtype &e)//出栈 
{
    if(S==NULL)//判断是否为空栈 
    {
        cout<<"出栈失败"<<endl;
        return error;
    }
    LinkStack p;
    p=S;
    e=p->data;
    S=S->next;
    delete p;
    return ok;
}

Status huiwen(LinkStack &S)//判断回文函数 
{
    int i=0,n=0;
    Selemtype e,str[MAXSIZE];//用字符数组存储字符串 
    while(cin>>str[n])//输入元素并将元素压入栈中 
    {
        if(str[n]=='#')
        break;
        Push(S,str[n]);
        n++;
    }
    if(str[i]=='#')//排除空栈的可能 
    return error;
    while(i<n)//判断回文 
    {
        Pop(S,e);
        if(str[i]!=e)
        return error;
        i++;
    }
    return ok;
}

main()
{
    LinkStack S;
    InitStack(S);
    if(!huiwen(S))
    cout<<"Yes"<<endl;
    else
    cout<<"No"<<endl;
    
}

标签:Status,LinkStack,Selemtype,return,C++,str,链式,define,回文
From: https://blog.csdn.net/2302_81946161/article/details/137087570

相关文章

  • 蓝桥杯试题 基础练习 特殊回文数
    问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。输入格式输入一行,包含一个正整数n。输出格式按从小到大的顺序输出满足条件的整数,每个整数占一行。样例......
  • 2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第6题题解
    目录问题描述:方法一:dfs暴力模拟(45%)方法二:dfs剪枝(100%)问题描述:        小蓝正在一个瓜摊上买瓜。瓜摊上共有n个瓜,每个瓜的重量为Ai。小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。小蓝希望买到的瓜的重量的和恰好为m。请问小蓝至......
  • 【华为OD】2024年机试C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100分真题集质量分:94价格:39.9元C卷200分真题集质量分:94价格:99.9元从2023年11月开始,华为OD......
  • C++高频面试知识总结 part1
    面向对象1.什么是类?2.面向对象程序设计思想?3.多态的实现?4.动态多态的作用?5.动态绑定的实现?6.纯虚函数的作用以及实现?7.虚函数表如何维护?推荐阅读8.C++struct和类的区别?9.C++中类成员的访问权限?1.什么是类?是一种用户定义的数据类型,包含了数据成员和函数成员。数据成......
  • 线性表的链式表示--定义与初始化
    链表与数组不同点在于数组是采用随机存取,可根据第一个数据的位置退出其他任何数据的位置,而链表则采用顺序存取,想要取出第i个数据必须从头指针出发顺链表寻找。一.定义    链表的每一个节点应该包括它的数据域以及指针域。因此单链表的存储结构为二.初始化  ......
  • 【C++从0到1-黑马程序员】STL容器(一)
    ​​​​​​C++从0到1-黑马程序员课程学习笔记课程链接:23string容器-构造函数_哔哩哔哩_bilibili1.String容器1.1string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char*的区别:char*是一个指针string是一个类,类内部封装了char*,管理这......
  • 【OpenCV】OpenCV (C++) 与 OpenCvSharp (C#) 之间数据通信
     OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多......
  • LeetCodeHot100 链表 160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表
    160.相交链表https://leetcode.cn/problems/intersection-of-two-linked-lists/description/?envType=study-plan-v2&envId=top-100-likedpublicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){intlenA=0;intlenB=0;L......
  • C++复制构造函数、=运算符重载
    C++复制构造函数、=运算符重载#include<iostream>usingnamespacestd;classbase{private:intx,y;public:base():x(2),y(4){cout<<"basedefaultconstructor"<<endl;}base(intx,inty):x(x),y(y){cout<<"base......
  • C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)
    C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的异常的捕获C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)一、异常与捕获1、C++异常处理关键字:try,......