黑客X档案官方论坛's Archiver

菜瓜 发表于 2008-4-23 11:14

各位高手大哥帮小弟看下

基于链栈判断回文的算法(以@作为输入字符串结束标志)运行结果不正确~~~~
#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;
}

菜瓜 发表于 2008-4-23 11:18

有个地方少打错了~~~

main()中的if(str2[j] != str)改为if(str2[j] != str[i])不好意思~~~,各位帮帮忙啊

菜瓜 发表于 2008-4-23 11:20

晕又错是if(str2[j] != str[i])

菜瓜 发表于 2008-4-23 11:25

不知道为什么,发不出来~~~右边那个是str方括号 i 方括号

页: [1]


Powered by Discuz! 6.1.0  © 2001-2007 Comsenz Inc.