栈解决回文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈解决回文相关的知识,希望对你有一定的参考价值。

首先,先说说栈。

栈:后进先出的数据结构,它叫做栈。

回文:就是像这样:“123321”,“1221”。等就是回文。

解决方法:先把字符串前半截123或12压栈,然后再出栈和字符串后半截321比较,就OK。

上代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
判断回文
*/
int statckJudge(char *arr,int size)
{
	char temp[100] = {0};//存放前半部分
	int index = 0;
	int top = 0;//栈初始值
	int next = 0;//后半部分下标
	int mid = size/2 - 1;//中间位置
	//检测传进的指针是否为空
	if ( NULL == arr)
	{
		return -1;
	}
	//将字符串的前半部分放到temp中
	for ( ; index <= mid ;index++ )
	{
		temp[++top] = arr[index];
	}
	//求取后半部分起始下标
	if ( 0 == size%2 )
	{
		next = mid+1;
	}
	else
	{
		next = mid+2;
	}
	//判断是否为回文
	for (index = next;index < size;index++)
	{
		if ( temp[top] != arr[index] )
		{
			return -1;
		}
		top--;
	}
	if ( 0 == top )//说明全部字符成立,成立则为回文。
	{
		return 0;
	}
	else
	{
		return -1;
	}
}
int main()
{
	int sizeOfArr = 0;//输入字符串长度
	int ret = 0;//接收函数返回值
	char inputArr[100] = {0};//装载回文
	printf("请输入要判断的字符串:");
	gets(inputArr);//获取输入
	sizeOfArr = strlen(inputArr);//求取输入字符串长度
	ret = statckJudge(inputArr,sizeOfArr);//接收返回值
	//判断返回值,并做相应输出
	if ( 0 == ret)
	{
		printf("yes\n");
	}
	else
	{
		printf("no\n");
	}
	system("pause");//让它停下来
	return 0;
}


以上是关于栈解决回文的主要内容,如果未能解决你的问题,请参考以下文章

[PTA][C语言]使用栈完成回文判断

解密回文——栈

判断字符串是否为回文(C语言 顺序栈)

:栈 -- 栈的介绍实现方式(链表数组)应用场景快速入门(使用数组模拟栈的使用回文数)栈实现计算器

数据结构入门栈的应用

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段