云舒云卷吧 关注:6贴子:166
  • 4回复贴,共1
#include<stdlib.h>
#include<iostream.h>
//顺序栈定义
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int SElemType;
typedef int QElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
//队列
#define MAXQSIZE 100
typedef struct{
QElemType *base;
int front;
int rear;
}SqQueue;
//顺序栈的初始化
Status InitStack(SqStack &S){
S.base = new SElemType[MAXSIZE];
if(!S.base)
exit (OVERFLOW);
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
//顺序栈的入栈
Status Push(SqStack &S,SElemType e){
if(S.top-S.base==S.stacksize)
return ERROR;
*(S.top++) = e;
return OK;
}
//顺序栈的出栈
Status Pop(SqStack &S,SElemType &e){
if(S.base == S.top)
return ERROR;
e = *(--S.top);
return OK;
}
//队列的初始化
Status InitQueue(SqQueue &Q){
Q.base=new QElemType[MAXQSIZE];
if(!Q.base) exit(OVERFLOW);
Q.front=0;Q.base=0;
return OK;
}
//入队
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
//出队
Status DeQueue(SqQueue &Q,QElemType &e){
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
void HuiWen(){
char c;
SqStack S;
SqQueue Q;
int n,m;
cout<<"输入一串字符:";
gets(c);
while(c!='#'){
Push(S,c);
EnQueue(Q,c);
cin>>c;
}
while(S.base==S.top&&Q.front==Q.rear){
Pop(S,n);DeQueue(Q,m);
if(n==m) cout<<"该字符串是回文"<<endl;
else cout<<"该字符串不是回文"<<endl;
}
}
void main(){
HuiWen();
}


1楼2015-05-06 11:37回复
    void HuiWen(){
    int L=10,i=0;
    char c[10];
    SqStack S;
    SqQueue Q;
    int n,m;
    cout<<"输入一串字符:";
    cin>>c;
    while(c[i]!='\n'){
    EnQueue(Q,c[i]);
    Push(S,c[i]);
    i++;
    cin>>c[i];
    }
    while(S.base==S.top&&Q.front==Q.rear){
    Pop(S,n);DeQueue(Q,m);
    if(n==m) cout<<"该字符串是回文"<<endl;
    else cout<<"该字符串不是回文"<<endl;
    }
    }
    void main(){
    HuiWen();
    }


    2楼2015-05-06 11:49
    回复
      #include<stdlib.h>
      #include<iostream.h>
      //˳ÐòÕ»¶¨Òå
      #define OK 1
      #define ERROR 0
      #define OVERFLOW -2
      #define MAXSIZE 100
      typedef int Status;
      typedef char SElemType;
      typedef char QElemType;
      typedef struct{
      SElemType *base;
      SElemType *top;
      int stacksize;
      }SqStack;
      //¶ÓÁÐ
      #define MAXQSIZE 100
      typedef struct{
      QElemType *base;
      int front;
      int rear;
      }SqQueue;
      //˳ÐòÕ»µÄ³õʼ»¯
      Status InitStack(SqStack &S){
      S.base = new SElemType[MAXSIZE];
      if(!S.base)
      exit (OVERFLOW);
      S.top = S.base;
      S.stacksize = MAXSIZE;
      return OK;
      }
      //˳ÐòÕ»µÄÈëÕ»
      Status Push(SqStack &S,SElemType e){
      if(S.top-S.base==S.stacksize)
      return ERROR;
      *(S.top++) = e;
      return OK;
      }
      //˳ÐòÕ»µÄ³öÕ»
      Status Pop(SqStack &S,SElemType &e){
      if(S.base == S.top)
      return ERROR;
      e = *(--S.top);
      return OK;
      }
      //
      Status InitQueue (SqQueue &Q){
      Q.base =new QElemType[MAXQSIZE] ;
      if(!Q.base) exit(OVERFLOW);
      Q.front=Q.rear=0;
      return OK;
      }
      //Èë¶Ó
      Status EnQueue(SqQueue &Q,QElemType e){
      if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;
      Q.base[Q.rear]=e;
      Q.rear=(Q.rear+1)%MAXQSIZE;
      return OK;
      }
      //³ö¶Ó
      Status DeQueue(SqQueue &Q,QElemType &e){
      if(Q.front==Q.rear) return ERROR;
      e=Q.base[Q.front];
      Q.front=(Q.front+1)%MAXQSIZE;
      return OK;
      }
      void PushPop(SqStack &S){
      int n=5,i;SElemType e;
      for(i=0;i<n;i++){
      Pop(S,e);
      cout<<e<<"¡¡";
      }
      cout<<endl;
      }
      void HuiWen(){
      int i=0,flag=0;
      char c,n,m;
      SqStack S;
      SqQueue Q;
      InitStack(S);
      InitQueue (Q);
      cout<<"ÊäÈëÒ»´®×Ö·û£º";
      cin>>c;
      while(c!='#'){
      Push(S,c);
      EnQueue(Q,c);
      cin>>c;
      }
      while(S.base!=S.top){
      Pop(S,n);DeQueue(Q,m);
      if(n==m) flag=1;
      else flag=0;
      }
      if(flag) cout<<"¸Ã×Ö·û´®ÊÇ»ØÎÄ"<<endl;
      else cout<<"¸Ã×Ö·û´®²»ÊÇ»ØÎÄ"<<endl;
      }
      void main(){
      HuiWen();
      }


      IP属地:广西3楼2015-05-06 21:44
      回复
        void HuiWen(){
        int i=0,flag=1;
        char c,n,m;
        SqStack S;
        SqQueue Q;
        InitStack(S);
        InitQueue (Q);
        cout<<"ÊäÈëÒ»´®×Ö·û£º";
        cin>>c;
        while(c!='#'){
        Push(S,c);
        EnQueue(Q,c);
        cin>>c;
        }
        while(S.base!=S.top){
        Pop(S,n);DeQueue(Q,m);
        if(n!=m) flag=0;
        }
        if(flag) cout<<"¸Ã×Ö·û´®ÊÇ»ØÎÄ"<<endl;
        else cout<<"¸Ã×Ö·û´®²»ÊÇ»ØÎÄ"<<endl;
        }


        IP属地:广西4楼2015-05-06 21:48
        回复
          void HuiWen(){
          int i=0,flag=1;
          char c,n,m;
          SqStack S;
          SqQueue Q;
          InitStack(S);
          InitQueue (Q);
          cout<<"输入一串字符,以#结束:";
          cin>>c;
          while(c!='#'){
          Push(S,c);
          EnQueue(Q,c);
          cin>>c;
          }
          while(S.base!=S.top){
          Pop(S,n);DeQueue(Q,m);
          if(n!=m) flag=0;
          }
          if(flag) cout<<"该字符串是回文"<<endl;
          else cout<<"该字符串不是回文"<<endl;
          }


          IP属地:广西5楼2015-05-07 10:31
          回复