Java栈与队列判断回文_用栈和队列来判断字符序列是不是回文

本文介绍了一种使用Java实现栈和队列来判断字符序列是否为回文的方法。通过初始化栈和队列,然后将输入的字符依次压入栈和队列,再进行比较,从而确定字符序列的回文性质。
摘要由CSDN通过智能技术生成

回复 2楼 yuccn

#include

#define N 82

typedef struct node squeue;

struct node

{

char data[N];

int front;

int rear;

};

typedef struct snode sqstack;

struct snode

{

char elem[N];

int top;

};

void init_sqstack(sqstack &q);

void push_sqstack(sqstack &q, char x);

void pop_sqstack(sqstack &q, char &x);

void output_sqstack(sqstack q);

void init_squeue(squeue &s);

void push_squeue(squeue &s, char x);

void pop_squeue(squeue &s, char &x);

void output_squeue(squeue s);

void compare(squeue q, sqstack s);

int main(void)

{

squeue s;

sqstack l;

char ch, sh, ch1, sh1;

printf("init a stack: ");

init_sqstack(l);

printf("\npush some number to the stack: ");

ch=getchar();

while(ch != ' ')

{

push_sqstack(l,ch);

ch=getchar();

}

printf("\ninit a squeue: ");

init_squeue(s);

printf("\npush some number to the squeue: ");

sh=getchar();

while(sh != ' ')

{

push_squeue(s,sh);

sh=getchar();

}

printf("\nwhether is huiwen.");

compare(s,l);

return 0;

}

void init_squeue(squeue &s)

{

s.front=s.rear=0;

}

void push_squeue(squeue &s, char x)

{

if(s.front==(s.rear+1)%N)

printf("Error.\n");

else

{

s.data[s.rear]=x;

s.rear=(s.rear+1)%N;

}

}

void pop_squeue(squeue &s, char &x)

{

if(s.front==s.rear)

printf("the squeue is empty.\n");

else

{

x=s.data[s.front];

//printf("%c",x);

s.front=(s.front+1)%N;

}

}

void init_sqstack(sqstack &q)

{

q.top=0;

}

void push_sqstack(sqstack &q, char x)

{

if(q.top>=N)

printf("the sqstack is full.\n");

else

{

q.top++;

q.elem[q.top]=x;

}

}

void pop_sqstack(sqstack &q, char &x)

{

if(q.top==0)

printf("the sqstack is empty.\n");

else

{

x=q.elem[q.top];

q.top--;

}

}

void compare(squeue s, sqstack q)

{

char ch1, ch2;

if(s.front==s.rear || q.top==0)

printf("It's not huiwen.\n");

pop_sqstack(q,ch1);

pop_squeue(s,ch2);

while(ch1!=NULL &&ch2!=NULL)

{

if(ch1==ch2)

{

pop_sqstack(q,ch1);

pop_squeue(s,ch2);

}

else

{

printf("It's not huiwen.\n");

break;

}

}

}

void output_squeue(squeue s)

{

for(s.front=0;s.front

printf("%d", s.data [s.front ]);

}

void output_sqstack(sqstack q)

{

while(q.top>0)

printf("%c", q.elem[q.top]);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值