当前位置:   article > 正文

数据结构:回文判断_数据结构回文判断

数据结构回文判断

回文:

        指正读反读均相同的字符序列,如“abba”、“abdba”、12321均是回文

解题思路:

        基于栈的先进后出,后进先出的特点,可以用一个字符指针保存原来的字符串,再让待测字符串进栈,再出栈,将指针与字符串比较

代码实现:(C)

        

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #define MAXSIZE 100
  5. typedef struct Node {
  6. char *base;//指向栈底
  7. char *top;//指向栈顶
  8. int size;
  9. //size = 99;
  10. }*stack;
  11. stack init(){//栈的初始化
  12. //int n;
  13. stack s = (stack)malloc(sizeof(stack));
  14. s->base = (char*)malloc(sizeof(char)*MAXSIZE);
  15. if(!s->base)
  16. return NULL;
  17. //scanf("%d",&n);
  18. s->size = MAXSIZE;
  19. printf("初始化成功\n");
  20. s->top = s->base;
  21. s->size = MAXSIZE;
  22. return s;
  23. }
  24. int full_stack(stack s){//判断是否栈空
  25. if(s->top - s->base == MAXSIZE)
  26. return 1;
  27. else
  28. return 0;
  29. }
  30. int empty_stack(stack s){
  31. if(s->top == s->base)
  32. return 1;
  33. else
  34. return 0;
  35. }
  36. void push_stack(stack s,char n){//压栈
  37. if(full_stack(s) == 1){
  38. printf("已经栈满,无法添加!\n");
  39. return;
  40. }
  41. else {
  42. *(s->top++) = n;
  43. //printf("入栈成功\n");
  44. }
  45. }
  46. void pop_stack(stack s,char &e){//c++中,传入参数为&+变量名,会使传入参数的值永久改变
  47. if(empty_stack(s) == 1){
  48. printf("已经栈空!\n");
  49. return ;
  50. }
  51. else{
  52. e = *(--s->top);
  53. }
  54. }
  55. void getTop(stack s,char*e){
  56. if(empty_stack(s) == 1){
  57. printf("已经栈空!\n");
  58. return ;
  59. }
  60. *e = *s->top;
  61. }
  62. //具体思路:让待判断的数依次入栈再出栈,判断前后是否一致
  63. int main(){
  64. char fir[MAXSIZE];
  65. char *p1,*p;
  66. printf("请输入数据\n");
  67. //scanf("%s",p1);
  68. gets(fir);
  69. int len = strlen(fir);
  70. p1 = (char*)malloc(sizeof(char)*len);
  71. strcpy(p1,fir);
  72. len = strlen(p1);
  73. stack s = init();
  74. //printf("pause\n");
  75. int i;
  76. for(i=0;i<len;i++)
  77. {
  78. push_stack(s,fir[i]);
  79. p = s->top;
  80. printf("%c\n",*--p);
  81. }
  82. char temp;
  83. for(i=0;i<len;i++){
  84. pop_stack(s,temp);
  85. fir[i] = temp;
  86. printf("%c\n",fir[i]);
  87. }
  88. int bol = strcmp(p1,fir);
  89. if(bol == 0)
  90. printf("是回文\n");
  91. else
  92. printf("不是回文\n");
  93. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号