通过入栈出栈判断是否为回文

回文判断:《ABCCBA》对称。

1,思路:

1,主要思想:

首先定义栈存储结构包括一个字符型数组,和一个表示栈顶元素的指针的变量top然后在此基础上设计回文算法。

2,本程序包括四个模块:

(1),主函数:

int main(){

创建栈并进行初始化。

输入要进行判断的字符串。

定义一个bool型变量‘f’并进行初始化赋值为,ture。

让字符串进栈。

让字符串出栈,并且判断入栈和出栈的值是否相同,如果不一样,把f的值变为false后退出循环。

根据‘f’的值进行判断是否为回文

}

(2),创建初始化栈InitStack()—为栈分配储存空间,并且使栈顶指针的值为-1。

(3),入栈PushStatic()—如果栈满返回false,否则把栈顶指针+1,把e的值赋给栈顶元素返回ture。

(4),出栈PopStatic()—如果栈空返回false否则把栈顶元素赋值给e,栈顶指针-1,返回ture。

3,元素类型,节点类型和指针类型。

typedef struct Node{

cahr data[MAXSIZE];//最大容量

int top//栈顶指针。

}Static;

4,主函数和其他函数清单:

void InteStatic(Stack %&S){}

bool PushStatic(Stack %&s char e){}

bool PopStatic(Stack %&s char &e){}

int main(){}

/ / 到 此 就 结 束 了 \color{blue}{//到此就结束了} //

2,代码如下:

#include<iostream>

using namespace std;

#include<cstdlib>

#define MAXSIZE 1000

typedef struct Node{

char data[MAXSIZE];

int  top//

} 

$\color{red}{//创建栈并且进行初始化----}$

void InitStack(Stack *&s){

s = (Stack*)malloc(sizeof(Stack));//获取长度并赋值给‘s’。

s->top = -1;

}

$\color{red}{//开始入栈:}$

bool PushStack(Stack *&s char e){

if(s->top==MAXSIZE-1)//判断栈满

return false;

s->top++;

e=s->data[s->top] = e;

reutrn ture;

}

$\color{red}{//出栈操作:}$

bool PopStack(Stack *&s char &e){

if(s->top==-1)//如果栈空。

return false;

e=s->data[s->top];把栈顶元素赋值给e。

s->top--;

return ture;

}



$\color{red}{//开始写主函数:}$

int main()

{

   Stack *s;

   InitStack(s);//初始化栈。

   string a;

   cin>>a;

   char e;

   bool f=true;

   for(int i=0;i<a.length();i++)

   	PushStack(s,a[i]);//让字符串进栈 

   for(int i=0;i<a.length();i++)

   {

   	PopStack(s,e);//让字符串出栈,判断入栈和出栈的值是否完全一样 。

   	if(a[i]!=e)

   	{

   		f=false;

   		break;

   	}



   }

   if(!f)

   	cout<<"No";

   else

   	cout<<"Yes";

   return 0;



}

3, 运行结果如下:

(1),是回文:

在这里插入图片描述
(2),非回文:

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值