严蔚敏数据结构习题3.17
2015-10-08 19:17
387 查看
3.17 试写一个算法,识别一次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。
思路很简单,把&前面部分入栈,然后从&后面部分开始一个一个出栈比较,相同即可。
说个题外话,现在开始我会逐渐写些这个数据结构的习题完整的程序,主要发现网上很少,而且老师也布置了作业,这个仅供大家参考参考,一定要自己敲敲代码。
思路很简单,把&前面部分入栈,然后从&后面部分开始一个一个出栈比较,相同即可。
说个题外话,现在开始我会逐渐写些这个数据结构的习题完整的程序,主要发现网上很少,而且老师也布置了作业,这个仅供大家参考参考,一定要自己敲敲代码。
#include <stdio.h> #include <stdlib.h> #define stack_init_size 100 #define stack_increment 10 typedef struct { char *base; int top, stacksize; } sqstack; int init_stack(sqstack &s) { s.base = (char*)malloc(stack_init_size * sizeof(char)); if (!s.base) { exit(-1); } s.top = 0; s.stacksize = stack_init_size; return 1; } int destorystack(sqstack &s) { free(s.base); s.base = NULL; s.stacksize = 0; s.top = NULL; return 1; } int push(sqstack &s, char e) { char *newbase; if (s.top == s.stacksize) { newbase = (char*)realloc(s.base, (s.stacksize + stack_increment) * sizeof(char)); if (!newbase) { exit(-1); } s.base = newbase; s.stacksize += stack_increment; } 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; } /*3.17*/ int shiqi(char a[]) { int i = 0; sqstack s; char x; init_stack(s); while (a[i] != '&' && a[i]) { push(s, a[i]); i++; } if (!a[i])/*这里要特别留意&后面为空的情况*/ { return 0; } i++; while (a[i] != '@' && a[i]) { pop(s, x); if (x != a[i]) { destorystack(s); return 0; } i++; } return 1; } int main() { char a[100]; int k; gets(a); k = shiqi(a); if(k==1)printf("YES\n"); else printf("NO\n"); return 0; }
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- JavaScript数据结构和算法之图和图算法
- Array栈方法和队列方法的特点说明
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- 【数据结构与算法】数组应用4:多项式计算Java版