2 monicasia monicasia 于 2014.11.16 14:28 提问

这个数据结构题……求大神

有n个字符的字符串,判断字符串是否回文。 如: abcba和abccba都是回文;实验要求:
1.将输入的字符串放在单链表栈中;
2. 利用栈的入栈和出栈完成是否回文判断;
3. 应提供栈的基本操作,如栈的初始化、销毁、判断是否栈空等;
怎么用c++实现呢?

2个回答

caozhy
caozhy   Ds   Rxr 2014.11.18 21:41

假设你已经实现了堆栈(如果这个有困难,可以Google例子程序),那么实现的思路是:
for (int i = 0; i < (strlen(s) + 1) / 2; i++)
stack.Push(s[i]);
bool b = true;
for (int i = (strlen(s) + 1) / 2 - 1; i < strlen(s); i++)
{
if (stack.Pop != s[i]) { b = false; break; }
}
cout << b ? "是" : "不是";

lx624909677
lx624909677   Ds   Rxr 2014.11.18 14:46

首先建立一个链表用来存放字符串,再建立一个链表用来模拟栈,并且把之前链表中的内容放入栈中,因为栈是先进后出的,所以拿存放字符串的链表的头数据和栈的尾数据进行一一比较,如果有一个不相等那么这个字符串就不是回文串,销毁和初始化这些都是使用链表必然用到的,就不多说了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!