6_57.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:1k
源码类别:

文章/文档

开发平台:

C/C++

  1. #include<iostream.h>
  2. #include<string.h>
  3. struct sqstack
  4. {
  5. char data;
  6. sqstack* top;
  7. };
  8. class stack
  9. {
  10. sqstack * st;
  11. public:
  12. void init()
  13. {
  14. st=NULL;
  15. }
  16. void push(char );
  17. char pop();
  18. };
  19. void stack::push(char k)
  20. {
  21. sqstack * newst=new sqstack;
  22. newst->data=k;
  23. newst->top=st;
  24. st=newst;
  25. }
  26. char stack::pop()
  27. {
  28. char value;
  29. sqstack* t;
  30. value=st->data;
  31. t=st;
  32. st=st->top;
  33. delete t;
  34. return value;
  35. }
  36. struct list
  37. {
  38. int data;
  39. list *next;
  40. };
  41. class queue
  42. {
  43. list *head,*tail;
  44. public:
  45. void init()
  46. {
  47. head=tail=NULL;
  48. }
  49. void Inq(int x);
  50. int Outq();
  51. };
  52. void queue::Inq(int x)
  53. {
  54. list *newnd=new list;
  55. newnd->data=x;
  56. newnd->next=NULL;
  57. if(tail==NULL)
  58. head=tail=newnd;
  59. else
  60. {
  61. tail->next=newnd;
  62. tail=newnd;
  63. }
  64. }
  65. int queue::Outq()
  66. {
  67. list *temp;
  68. int value;
  69. value=head->data;
  70. temp=head;
  71. head=head->next;
  72. delete temp;
  73. return value;
  74. }
  75. void main()
  76. {
  77. stack A;
  78.     A.init();
  79. queue B;
  80.     B.init();
  81. char arr[80];
  82. cout<<"请输入字符序列,回车键结束:"<<endl;
  83. cin.getline(arr,80);
  84. int h=strlen(arr);
  85. for (int i=0;i<h;i++)
  86. {
  87. A.push(arr[i]);
  88. B.Inq(arr[i]);
  89. }
  90. for(i=0;i<h;i++)
  91. {
  92. if(A.pop()!=B.Outq())
  93. {
  94. cout<<"你所输入的字符序列不是回文!"<<endl;
  95.     return;
  96. }
  97. }
  98. cout<<"你所输入的字符序列是回文!"<<endl;
  99. }