@【数据结构】(栈 判断字符串回文)
用栈来实现一个表达式中的‘(’,‘[‘,’)’,’]’,’{‘,’}’是否匹配
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#define MAXN 100
using namespace std;
typedef char Elemtype;
typedef struct
{
Elemtype data[MAXN];
int top;
}Sqstack;
void Init(Sqstack &st)
{
st.top = -1;
}
int push(Sqstack &st, Elemtype x)
{
if (st.top == MAXN - 1) return 0;
else
{
st.top++;
st.data[st.top] = x;
return 1;
}
}
int pop(Sqstack &st ,Elemtype &x)
{
if (st.top == -1) return 0;
else
{
x = st.data[st.top];
st.top--;
return 1;
}
}
void Destroy(Sqstack st)
{
}
int judge(char str[], int n)
{
int i;
char c;
Sqstack st;
Init(st);
for (i = 0; i < n; i++)
push(st, str[i]);
i = 0;
while (st.top != -1) //栈不为空
{
pop(st, c);
if (c != str[i++])
{
Destroy(st);
cout << "字符串不回文" << endl;
return 0;
}
}
Destroy(st);
cout << "字符串回文" << endl;
return 1;
}
void main()
{
Sqstack st;
Init(st);
Elemtype str[10];
int n;
cout << "请输入字符串长度:";
cin >> n;
cout << "请输入字符串:" << endl;
for (int i = 0; i < n; i++)
cin >> str[i];
judge(str, n);
system("pause");
}
测试示例: