栈和队列判断回文怎样实现算法

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 22:04:25
栈和队列判断回文怎样实现算法

栈和队列判断回文怎样实现算法
栈和队列判断回文怎样实现算法

栈和队列判断回文怎样实现算法
然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:
#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;
}
运行结果:

栈和队列判断回文怎样实现算法 马踏棋盘的算法是数据结构的C语言版,用栈和队列来实现. 1.已知str是一个非空字符串,编写算法通过在临时栈S和队列Q中缓存数据,判处字符串str是否为回文,算法采用文字描述. 循环队列采用设置标志的方法来区分队列的满和空 实现这个算法! 看看这个程序怎么编写.假设称正读和反读都相同的字符序列为回文,假如abba和abcba是回文,abcda则不是回文,试编写算法判别读入的一个以@为结束符的字符序列是否为回文.基于队列的 栈和队列共同点 用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.主函数什么的都不用写,只写这两个算法!急!急!急! 实现图的广度优先搜索算法需使用的辅助数据结构为( ) A.栈 B.队列 C.二叉树 还有深度优先, 用邻接表表示的图进行广度优先遍历时,通常是采用()来实现算法的.A 栈 B队列 C图 D树 假设循环队列中只设rear和length来分别指示队尾元素和队中元素的个数,试给出半判断此循环队列的队满条件并写出相应的入队和出队算法 1.假设称正读和反读都相同的字符序列为“回文”,例如,“abcddcba”、 “qwerewq”是回文,“ashgash”不是回文.是写一个算法判断读入的一个以‘@’为结束符的字符序列是否为回文.2.设计一个 栈和队列的共同点 找出所有4位数的升序数和回文数,使用函数实现回文数和升序数的判断.用VB编程,马上啊.1、单击“回文数”按钮,找出所有4位数中的回文数.2、单击“升序数”按钮,找出所有4位数中的升序数.3 循环队列的优点是什么?如何判断它的空和满?假设循环队列只设rear和quelen来分别指示队尾元素的位置和队中元素的个数,试给出判断此循环队列的队满条件,并写出相应的入队和出队算法,要求 1.用邻接表表示图 广度优先搜索 通常采用什么实现算法 a 栈 b 队列 c 树 d图2.用邻接表表示图 深度优先搜索 通常采用什么实现算法a 栈 b 队列 c 树 d图 怎样判断有理数的加减法和普通算法? 设计一个算法,判断一个正的n(n>2)位数是不是回文数,用程序框图描述算法的步骤.(回文数是指从左到右读和从右到左读都是一样的正整数,如191,34543...)用 程序框图 描述算法的步骤 或是 程序 设计一个算法,判断一个正的n(n>2)位数是不是回文数,用自然语言描述算法步骤