数据结构c语言回文判断(运用栈以与队列完成)

数据结构c语言回文判断(运用栈以与队列完成)

ID:34932066

大小:90.00 KB

页数:6页

时间:2019-03-14

数据结构c语言回文判断(运用栈以与队列完成)_第1页
数据结构c语言回文判断(运用栈以与队列完成)_第2页
数据结构c语言回文判断(运用栈以与队列完成)_第3页
数据结构c语言回文判断(运用栈以与队列完成)_第4页
数据结构c语言回文判断(运用栈以与队列完成)_第5页
资源描述:

《数据结构c语言回文判断(运用栈以与队列完成)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据结构实验报告回文判断班级:学号:学生姓名:指导教师:时间:2015年5月5日1.实验目的:熟悉栈和队列的各项操作,区别栈和队列的操作原理。2.实验内容:利用栈的操作完成读入的一个以@结尾的字符序列是否是回文序列的判断.回文序列即正读与反读都一样的字符序列;例如:123&321@是;123&4321@、123&312@不是算法思想:从键盘上读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后一个字符为@停止输入,因为要满足特定的要求:序列1&序列2,故设置夜歌标记量falg=1,判断输入的元素个数是否为奇数

2、个,若为偶数个则令flag=0,若为奇数个继续判断栈的中间元素是否为&,若不是则令flag=0,若是,将栈和队列中的元素依次出列,判断是否相等,若不相等则令flag=0,最后将flag的值返回给主函数,若flag被修改为0说明不是回文序列,否则反之!!判断回文序列的流程图:初始化栈InitS(&s)初始化队列InitQ(&q)当ch!='@'时ch=getch()Ych!='@'Nprintf("%c",ch)push(&s,ch)enter(&q,ch)m++Ym%2!=0NYs->e[m/2]=='&'Nflag=

3、0i=1当i<(m+1)/2时flagpop(&s,&ch1)=0deleteq(&q,&ch2)Ych1!=ch2Nflag=0i++retun(flag)算法实现:(1)voidInitStack(SeqStack*s):栈初始化模块,即初始化一个空栈,随后对该空栈进行数据的写入操作;(2)intpush(SeqStack*s,charch):入栈操作,即给空栈中写入数据;(3)intpop(SeqStack*s,char*x):出栈操作,即将栈中的数据输出,由于栈的操作是先进后出,因此,出栈的数据是原先输入数据的

4、逆序;(4)voidInitQuene(LinkQ*q):队列初始化,即初始化一个空队列,最后对该空队列进行数据的写入操作;(5)intenter(LinkQ*q,charch):入队操作,即给空队列中写入数据;(6)intdeleteq(LinkQ*q,char*c):出队操作,即将队列中的数据输出,由于队列的操作是先进先出,因此,出队的数据室原先输入数据的正序;(7)inthuiwen(SeqStacks,LinkQq):输入序列并判断所输入的序列是否是回文序列;(8)voidmain():主函数,用于调用前面的模

5、块,并输出最终的判断结果。3.实验感想与体会通过本次的上机,对栈的各项基本操作都有了更好的掌握,同时明白了一些小的细节问题可能会影响到整个程序的正确的运行,本次的实验我通过了运用栈和队列,可以说对队列的一些基本的操作也得以了巩固和提高!更加体会到,自己写程序上机操作的重要性,它要比课本上学的要多得多!4.附录(源代码及运行图)#include#include#defineMAX100typedefstruct//栈结构体{chare[MAX];inttop;}SeqStack;ty

6、pedefstructNODE//队列结构体{chard;structNODE*next;}LinkQN;typedefstruct//封装头指针为指针{LinkQN*front;LinkQN*rear;}LinkQ;voidInitStack(SeqStack*s)//初始化顺序栈{s->top=-1;}intpush(SeqStack*s,charch)//入栈{if(s->top==MAX-1)return(0);s->top++;s->e[s->top]=ch;return(1);}intpop(SeqStac

7、k*s,char*x)//出栈{if(s->top==-1)return(0);else{*x=s->e[s->top];s->top--;return(1);}}voidInitQuene(LinkQ*q)//链队列初始化{q->front=(LinkQN*)malloc(sizeof(LinkQN));if(!q->front){printf("分配空间失败!");}q->rear=q->front;q->front->next=NULL;}intenter(LinkQ*q,charch)//入队{LinkQN*n

8、p;np=(LinkQN*)malloc(sizeof(LinkQN));if(!np)return(0);np->d=ch;np->next=NULL;q->rear->next=np;q->rear=np;return(1);}intdeleteq(LinkQ*q,char*c)//出队{LinkQN*p;if(q->fron

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。