数据结构java用顺序栈实现回文_用数据结构的栈和队列 写 回文判断

本文通过Java实现使用顺序栈判断一个字符串是否为回文。代码示例中,先将字符串入栈,然后逐一出栈并与字符数组比较,以此判断字符串是否为回文。
摘要由CSDN通过智能技术生成

展开全部

用栈实现了判断回文数的操作,即把字符串依次32313133353236313431303231363533e58685e5aeb931333262353461入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#define EMPTY 0

#define FULL 10000

#define MAX 10000

typedef char data;

typedef struct elem {

data d;

struct elem *next;

}elem;

typedef struct stack {

int cnt;

elem *top;

}stack;

void initialize(stack *stk);

void push(data d, stack *stk);

data pop(stack *stk);

bool empty(const stack *stk);

bool full(const stack *stk); //栈操作函数

void initialize(stack *stk)

{

stk->cnt = 0;

stk->top = NULL;

}

bool empty(const stack *stk)

{

return stk->cnt == EMPTY;

}

bool full(const stack *stk)

{

return stk->cnt == FULL;

}

void push(data d, stack *stk)

{

elem *p;

if (!full(stk))

{

p = (elem *)malloc(sizeof(elem));

p->d = d;

p->next = stk->top;

stk->top = p;

stk->cnt++;

}

}

data pop(stack *stk)

{

data d;

elem *p;

if(!empty(stk))

{

d = stk->top->d;

p = stk->top;

stk->top = stk->top->next;

stk->cnt--;

free(p);

}

return d;

}

int main(void)

{

data input[MAX];

stack temp;

int i = 0;

int flag = 0;

initialize(&temp); //初始化临时栈

scanf("%s", &input); //输入字符串

while (input[i] != '@')

{//字符串入栈

push(input[i], &temp);

i++;

}

while (!empty(&temp))

{//字符依次出栈和字符数组比较,判断是否回文数

if (temp.top->d == input[flag])

{

pop(&temp);

flag++;

}

else

{

printf("此字符序列不是回文数!\n");

break;

}

}

if (empty(&temp))

printf("此字符序列是回文数!\n");

return 1;

}

运行结果:

53f45b3f7aa46052505c7833e9a01357.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值