严蔚敏数据结构习题3.31
2015-10-08 19:26
381 查看
3.31 假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。
这题非常简单,分别入栈和入队,然后出栈和出队列比较,相同即可。这种思路我也是灵光一闪想到的。本以为能沾沾自喜,网上搜了一下基本都是这样,orz,只能感叹一句:我是一只小菜鸟~~
因为很简单,所以注释就不怎么打了,基本一眼就能看懂的
这题非常简单,分别入栈和入队,然后出栈和出队列比较,相同即可。这种思路我也是灵光一闪想到的。本以为能沾沾自喜,网上搜了一下基本都是这样,orz,只能感叹一句:我是一只小菜鸟~~
因为很简单,所以注释就不怎么打了,基本一眼就能看懂的
#include <stdio.h> #include <stdlib.h> #define initsize 100 #define addsize 10 typedef struct { char *base; int top,stacksize; }sqstack; int init_stack(sqstack &s) { s.base=(char*)malloc(initsize*sizeof(char)); if(!s.base)exit(-1); s.top=0; s.stacksize=initsize; return 1; } int push(sqstack &s,char e) { char *newbase; if(s.top==s.stacksize) { newbase=(char*)realloc(s.base,(s.stacksize+addsize)*sizeof(char)); s.base=newbase; s.stacksize+=addsize; } s.base[s.top++]=e; return 1; } int pop(sqstack &s,char &e) { if(!s.top)return 0; e=s.base[--s.top]; return 1; } int stackempty(sqstack s) { return !s.top; } typedef struct { char data[initsize]; int rear,head; }sqqunue; void init_qunue(sqqunue &q) { q.rear=q.head=0; } int ensqunue(sqqunue &q,char e) { if ((q.rear + 1) % initsize == q.head) { return 0; } q.data[q.rear] = e; q.rear = (q.rear + 1) % initsize; return 1; } int delsqunue(sqqunue &q,char &e) { if(q.head==q.rear)return 0; e=q.data[q.head]; q.head=(q.head+1)%initsize; return 1; } int sanshiyi(char *p) { sqqunue q; sqstack s; char e1,e2; init_qunue(q); init_stack(s); while(*p) { push(s,*p); ensqunue(q,*p); p++; } while(!stackempty(s)) { pop(s,e1); delsqunue(q,e2); if(e1!=e2)return 0; } return 1; } int main() { char p[100]; int k; gets(p); k=sanshiyi(p); if(k==1)printf("YES"); else printf("NO"); return 0; }
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- C语言单链队列的表示与实现实例详解
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- JavaScript数据结构和算法之图和图算法
- Array栈方法和队列方法的特点说明