每日收获

栈的回文

include<stdio.h>

define MAX 100

typedef struct{
char data[MAX];
int index;
}stack;

void initStack(stack *s){
s->index=-1;
}

int push(stack *s,char ch){
if(s->index==(MAX-1)){
printf("栈满");
return 0;
}
s->data[++(s->index)]=ch;
return 1;
}

int pop(stack *s,char *ch){
if(s->index==(-1)){
printf("栈空");
return 0;
}
*ch = s->data[(s->index)--];
return 1;
}

int main(){
stack s;
int length;
char ch[MAX];

initStack(&s);

scanf("%d",&length);
getchar();//吸收换行符

for(int i=0;i<length;i++){
    scanf("%c",&ch[i]);
}

for(int i=0;i<length;i++){
    if(ch[i]==' '){
        printf("入栈不成功");
        return 0;
    }
}

int mid=length/2;
for(int i=0;i<mid;i++){
    push(&s,ch[i]);
}

int flag=1;
char c;
int start=(length%2==0)?mid:mid+1;
for(int i=start;i<length;i++){
    if(!(pop(&s,&c))||c!=ch[i]){
        flag=0;
    }
}

if(flag==1){
    printf("此字符串是回文串");
}else{
    printf("此字符串不是回文串");
}

return 0;
}

队列的回文

include<stdio.h>

include<string.h>

define MAX 100

typedef struct{
char data[MAX];
int front;
int rear;
}Queue;

void initQueue(Queue *q){
q->front=0;
q->rear=0;
}

int enqueue(Queue *q,char ch){
if((q->rear+1)%MAX==q->front){
printf("队满");
return 1;
}
q->data[q->rear]=ch;
q->rear=(q->rear+1)%MAX;
}

int deQueueFront(Queue *q,char *ch){
if(q->front==q->rear){
printf("队空");
return 0;
}
*ch=q->data[q->front];
q->front=(q->front+1)%MAX;
return 1;
}

int deQueueRear(Queue *q,char *ch){
if(q->front==q->rear){
printf("队空");
return 0;
}
q->rear=(q->rear-1)%MAX;
*ch=q->data[q->rear];
return 1;
}

int getSize(Queue *q){
return (q->rear-q->front+MAX)%MAX;
}

int main(){
char ch[MAX];
Queue q;
initQueue(&q);

//读入字符串
fgets(ch,MAX,stdin);
//去除字符串末尾换行符
ch[strcspn(ch,"\n")]='\0';

   for(int i=0;i<strlen(ch);i++){
       if(ch[i]!=' '){
           enqueue(&q,ch[i]);
       }
   }

   int flag=1;
char front,rear;
   while(getSize(&q)>1){
       deQueueFront(&q,&front);
       deQueueRear(&q,&rear);
       if(front!=rear){
           flag=0;
           break;
       }
   }

   if(flag){
       printf("该字符串是回文字符串");
   }else{
       printf("该字符串不是回文字符串");
   }
   
return 0;

}

posted @ 2025-11-08 12:51  鲁国石玉峰  阅读(5)  评论(0)    收藏  举报