链栈的学习(回文数)

来源:互联网 发布:网络电视华人台 编辑:程序博客网 时间:2024/05/20 11:27
思路:    1.先用arr1[]存入字符串    2.把arr1[]中的字符入栈    3.把栈中字符出栈并存入arr2[]中    4.比较arr与arr2,相同则是回文数,反之则不是----------#include<iostream>using namespace std;#define NULL 0 struct node{    char x ;    struct node *next;};class stack{public:    stack ();    void Create_Stack ();    void Push_Stack ();    void Pop_stack ();    void cmp ();    int Get_length ();private:    struct node *top;    struct node *New_node;    char arr1[20];    char arr2[20];    int length;    int count1 ;    int count2 ;};stack ::stack (){    top = NULL;    New_node = NULL;    length = count1 = count2= 0;}int stack::Get_length (){    return strlen(arr1);}void stack::Create_Stack (){    top = new node;    top->x ='0';    top->next = NULL;    cin>>arr1;          //读入原数据存入arr1[]中;}void stack::Push_Stack (){    New_node = new node;    New_node->x = arr1[count1] ;    //把arr1[]中的数据入栈    count1++;    New_node->next = top->next;    top->next = New_node;}void stack::Pop_stack (){    struct node *p = top->next;     //出栈把栈中数据输出到arr2[];    arr2[count2] = p->x;    count2++;    top->next = p->next;    delete p;}void stack::cmp ()                  //比较arr1[]和arr2[]是否相等{    int i = 0 ;    for ( i  ; i < strlen (arr1) ; i++)    {        if (arr1[i] != arr2[i])            break;    }    if (i  == strlen (arr1))        cout<<"是回文数!!"<<endl;    else        cout<<"不是回文数!!!"<<endl;}int main (){    stack S;    S.Create_Stack();    int i = 0;    while  (i < S.Get_length () )//将arr1中字符入栈    {        S.Push_Stack ();        i++;    }    i = 0;    while  (i < S.Get_length () ) //将栈中字符出栈并存入arr2    {        S.Pop_stack ();        i++;    }    S.cmp ();//比较arr1与arr2是否相等,并输出结果    system ("pause");}
0 0
原创粉丝点击