天天看点

数据结构——用栈来判断回文字符串

#include<iostream>

#include<string>

typedef int Status;

using namespace std;

typedef struct StackNode//定义栈

{

char data;

struct StackNode *next;

}StackNode,*LinkStack;

Status InitStack(LinkStack &S)//创建链栈

S = NULL;

return 1;

}

Status Push(LinkStack &S, char e)//入栈

StackNode *p;

p=new StackNode;

p->data = e;

p->next = S;

S = p;

Status Pop(LinkStack &S, char &e)//出栈

p = new StackNode;

if (S == NULL)

return 0;

e = S->data;

p = S; S = S->next;

delete p;

int main()

string a;

LinkStack S;//建立链栈

cin >> a;//输入字符串

for (char i : a) //遍历字符串

{

if (i != ' ')//如果字符不为空格,入栈

{

Push(S, i);

}

}

while (1)

char j;

for (char i : a)

Pop(S, j);//出栈

if (i != ' ')//如果字符不为空格,进行比较

{

if (i != j)

{

cout << "不是回文字符串" << endl;

return 0;

}

}

cout << "是回文字符串" << endl;

继续阅读