HYIT邱老师数据结构课程栈与回文数
#include<iostream>
using namespace std;
struct Node
{
char x;
Node *next;//struct Node *next;
};
class Stack
{
private:
Node *top;
Node *New_node;
char arr1[20];
char arr2[20];
int length;
int count1;
int count2;
public:
Stack();
void Creat();
void Push();
void Pop();
void Cmp();
int GetLength();
};
Stack::Stack()
{
top = NULL;
New_node = NULL;
length = count1 = count2 = 0;
}
int Stack::GetLength()
{
return strlen(arr1);
}
void Stack::Creat()
{
top = new Node;
top->next = NULL;
top->x = '0';
cin >> arr1;
}
void Stack::Push()
{
New_node = new Node;
New_node->x = arr1[count1];
count1++;
New_node->next = top->next;
top->next = New_node;
}
void Stack::Pop()
{
Node *p = top->next;
arr2[count2] = p->x;
count2++;
top->next = p->next;
delete p;
}
void Stack::Cmp()
{
int i = 0;
for (i; i < strlen(arr1); i++)
{
if(arr1[i] != arr2[i])
{
break;
}
}
if (i == strlen(arr1))
cout << "Yes" << endl;
else
cout << "No" << endl;
}
int main()
{
Stack S;
S.Creat();
int i = 0;
while (i < S.GetLength())//将arr1中字符入栈
{
S.Push();
i++;
}
i = 0;
while (i < S.GetLength()) //将栈中字符出栈并存入arr2
{
S.Pop();
i++;
}
S.Cmp();//比较arr1与arr2是否相等,并输出结果
return 0;
}