专业课-数据结构(回文判断实验)
实验内容:
数据结构-用C语言描述(耿国华)P111实习题1
回文判断。
称正读与反读都相同的字符序列为“回文”序列。
试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如“序列1&序列2”模式的字符序列。其中序列1和序列2中都不含字符“&”,且序列2时序列1的逆序列。例如,“a+b&b+a”是属于该模式的字符序列,而“1+3&3-1”则不是。
#include <stdio.h> //头文件
#define TRUE 1 //对TRUE与FALSE进行宏定义
#define FALSE 0/*定义栈Stack用作存放输入的字符*/
typedef struct{ char elem[100]; int top;
}Stack;/*预处理指令:初始化栈、入栈、出栈、判断栈是否为空*/
void InitStack(Stack *s);
int Push(Stack *s,char e);
int Pop(Stack *s,char *x);
int IsEmpty(Stack *s);/*主函数*/
int main(){ Stack s; //定义存放输入字符栈的栈s char ch; //定义输入的字符为ch char temp; //当字符从栈中弹出时,使用temp暂存 InitStack(&s); //初始化栈s printf("\n请输入以@为结尾的字符序列:"); //提示用户输入字符序列 ch=getchar(); //getchar单个输入字符 //当ch不为字符&时,压入栈s,循环输入字符while(ch!='&'){ Push(&s,ch); ch=getchar(); } /*当ch不为字符@并且栈s不为空时,将&后输入的字符与之前压入栈中的字符依次循环判断是否对应相等*/ do{ ch=getchar(); //得到&后输入的字符 Pop(&s,&temp); //将&之前压入栈s的字符出栈/*如果&后新输入的字符与栈s弹出的字符不依次对应相等,输出序列1与序列2不相同,返回FALSE*/ if(ch!=temp){printf("\n序列1与序列2不相同"); return(FALSE);}}while(ch!='@' && !IsEmpty(&s)); ch=getchar();
/*当栈为空时并且输入的下一个字符为@时,说明序列1与序列2相同,反之不同*/if(ch=='@' && IsEmpty(&s)){ printf("\n序列1与序列2相同");return(TRUE);}else{ printf("\n序列1与序列2不相同"); return(FALSE); }
}/*初始化栈*/
void InitStack(Stack *s){ s->top=-1;
}/*入栈*/
int Push(Stack *s,char e){ if(s->top!=99){ (s->top)++; s->elem[s->top]=e;
}else return (FALSE);
}/*出栈*/
int Pop(Stack *s,char *x){ if(s->top!=-1){ *x=s->elem[s->top]; s->top--;return(TRUE); }else return(FALSE);
}
/*判断栈是否为空*/
int IsEmpty(Stack *s){if(s->top==-1) return(TRUE); return(FALSE);
}
学习感悟:
1.一开始的设置
Stack *s;
char *temp;
后面的引用相应改变,但是只能在手机上运行,无法在电脑上运行,于是一直在debug,最后改成了
Stack s;
char tempt;
后面相应使用&进行引用,但是不太清楚为什么,如果有知道同学可以告诉我一下,谢谢您!!!
专业课-数据结构(回文判断实验)相关推荐
- 数据结构:使用链栈实现回文判断
题目: 回文判断 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列.其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序列.例 ...
- java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)
实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...
- 回文判断 【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子,判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No
回文判断 [问题描述] 回文是正读和倒读都一样的句子.读入一个最大长度不超过50个字符的句子,判断其是否是回文. [输入形式] 输入一个最大长度不超过50个字符的句子 [输出形式] Yes/No [输 ...
- java判断回文用valueof_回文判断 - 平行宇宙 - ITeye博客
回文 把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环. 锦字回文 前秦时期,秦州刺史窦滔因得罪了苻坚的手下大官被流放到流沙县.夫妻天各一方,他的妻子苏蕙特地在一 ...
- java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...
- java的回文是什么_Java实现回文判断
1 问题描述 给定一个字符串,如何判断这个字符串是否是回文串? 所谓回文串,是指正读和反读都一样的字符串,如madam.我爱我等. 2 解决方案 解决上述问题,有两种方法可供参考: (1)从字符串两头 ...
- 回文判断--链表实现
1.问题 回文是从前面到后面或从后面到前面逐个字母地读,都是一样得单词或短语.例如,"reviver"和"Able was I ere I saw Elba"都 ...
- 回文判断(栈+队列)
我们把正读和反读都相同的字符序列称为"回文",例如abba和abcba是回文,abcde不是回文.尝试写一个算法判别读入的一个以@为结束符的字符是否是回文. 输入格式 输入为一行, ...
- Python回文判断代码优化与6个思考题
送个福利:清华大学出版社和新宝图书专营店联合推出正版特价图书<Python程序设计开发宝典>,原价69元,特价47.6元,详情:https://detail.tmall.com/item. ...
最新文章
- 学习opengl入门
- 蓝牙BLE LINK LAYER剖析(二) -- PDU
- 阿里技术嘉年华-aDev内容感悟
- 【CyberSecurityLearning 58】PHP代码注入
- Hadoop hdfs 使用流来上传文件代码示例
- 解决numpy报错UFuncTypeError: Cannot cast ufunc ‘add‘ output from dtype(‘x‘) to dtype(‘x‘)
- iOS 10.3下解决Fiddler代理抓包ssl证书信任问题
- GetUserName()第二个参数中指明缓冲区长度
- Oracle高级教程
- cmder添加到系统变量中_Cmder配置
- linux时间转excel,linux时间戳转换【操作模式】
- linux三星电脑开机怎么进入页面,三星Samsung笔记本怎么开机进入BIOS
- 关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考
- Git创建版本库及git init 、add 和 commit -m 的基本使用
- JAVA8新特性的StreamAPI 遇到的问题stream has already been operated upon or closed
- PT100温度传感器的工作原理
- 网络变压器、网络通讯用磁性器件的要求和发展趋势
- 最优化方法:非线性方程的求极值方法
- 【R语言】使用nnet过程中报错Error in eval(predvars, data, env) : object ‘naulong‘ not found
- python 的循环嵌套