各位高手大哥帮小弟看下
基于链栈判断回文的算法(以@作为输入字符串结束标志)运行结果不正确~~~~#include <iostream>
#include <string>
#define StackSize 100
using namespace std;
typedef struct Node{
char data;
struct Node *next;
}StackNode, *LinkStack;
LinkStack top;
//初始化
LinkStack Init_LinkStack(){
return NULL; //返回栈顶(空指针)
}
//判栈空
int Empty_LinkStack(LinkStack top){
if(top==NULL)
return 1;
else
return 0;
}
LinkStack Push_LinkStack(LinkStack top,char x){
StackNode *s;
s = new StackNode;
s->data = x;
s->next = top;
top = s;
return top;
}
LinkStack Pop_LinkStack(LinkStack top,char x){
StackNode *p;
if(top == NULL)
return NULL;
else{
x = top->data;
p = top;
top = top->next;
delete p;
return top;
}
}
int main()
{
LinkStack L;
StackNode *S;
S = new StackNode;
char str[100],str2[100];
int i=0,j,;
cout<<"请输入要检测的字符串,可以包含空格,以@结束"<<endl;
cin>>str;
while(str[i]!='@');
{
S=new StackNode;
S->data=str[i];
S->next=L;
cin>>str[i];
i++;
}
for(i=0;i<strlen(str)-1;i++)
Push_LinkStack(top,str[i]);
for(j=0;j<strlen(str)/2-1;j++)
{
Pop_LinkStack(top,str2[j]);
i++;
if(str2[j]!=str[i])
break;
else
{
cout<<"是回文"<<endl;
system("pause");
}
}
cout<<"不是回文"<<endl;
system("pause");
return 0;
}
有个地方少打错了~~~
main()中的if(str2[j] != str)改为if(str2[j] != str[i])不好意思~~~,各位帮帮忙啊 晕又错是if(str2[j] != str[i]) 不知道为什么,发不出来~~~右边那个是str方括号 i 方括号页:
[1]
