ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:20.71KB ,
资源ID:19725040      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19725040.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(回文判断Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

回文判断Word格式.docx

1、 free(p); return d;int main(void) data inputMAX; stack temp; int i = 0; int flag = 0; initialize(&temp); /初始化临时栈 scanf(%s, &input); /输入字符串 while (inputi != ) /字符串入栈 push(inputi, & i+; while (!empty(&temp) /字符依次出栈和字符数组比较,判断是否回文数 if (temp.top-d = inputflag) pop(& flag+; else printf(此字符序列不是回文数!n); brea

2、k; if (empty(&temp) printf(此字符序列是回文数! return 1;判断用户输入的字符串是否为回文/*题目*/判断用户输入的字符串是否为回文/回文是指顺读和反读都一样的串/例:abccba为回文,abcdab不是回文/*/数据结构:循环队列和顺序栈/算法思想:/1.将字符串按照用户输入的顺序分别入栈和队列/2.分别从队列和栈中取出首个字符/3.比较取出的字符,若相等,继续分别从队列和栈中取首个字符;否则跳出循环,并设置标志flag=0;/4.若队列和栈中的字符取完,则结束,设置标志flag=1;/5.flag=1,表示字符从前往后和从后往前的序列完全匹配,该字符串属于

3、回文/6.flag=0,表示字符从前往后和从后往前的序列不完全匹配,该字符串不属于回文/programer:cooler#include #include#define m 100typedef structchar stackm;int top;stackstru; / 定义栈typedef struct char queuem;int front;int rear;queuestru; /定义队列void main()/函数声明int stinit(stackstru *s); /初始化顺序栈int stempty(stackstru *s); /判断栈是否为空int stpush(sta

4、ckstru *s,char x); /入栈char stpop(stackstru *s); /出栈int quinit(queuestru *q); /初始化循环队列int quempty(queuestru *q); /判断队列是否为空int enqueue(queuestru *q,char e); /入队char dequeue(queuestru *q); /出队/char c;int flag=0;stackstru *s=(stackstru *)malloc(sizeof(stackstru); /为顺序栈申请空间queuestru *q=(queuestru *)mallo

5、c(sizeof(queuestru); /为队列申请空间stinit(s); /初始化栈quinit(q); /初始化队列printf(Input a string:/输入字符串,输入标示输入结束。while(c=getchar()!=) /将输入的字符串入栈和队列putchar(c); /输出输入的字符stpush(s,c); /字符进栈enqueue(q,c); /字符进队列End input! /提示信息while(stempty(s) /栈中还有元素if(stpop(s)=dequeue(q) /出栈的字符与出队列的字符匹配flag=1; /将标志设置为1continue; /继续从

6、栈和队列中区字符else /字符不匹配flag=0;break; /跳出循环,将标志设置为0if(flag=1)This string is palindrome! /标志位为1,完全匹配,是回文elseThis string isnt palindrome!/标志位为0,不完全匹配,不是回文int stinit(stackstru *s)s-top=0;return 1; /初始化栈int stempty(stackstru *s)if(s-top=0) /栈顶为空return 0; /判断栈是否空int stpush(stackstru *s,char x)top=m) /栈满The st

7、ack is overflow! /输出提示信息else /栈未满top=s-top+1; /栈顶后移stacks-top=x; /字符入栈 /入栈操作char stpop(stackstru *s)char y;top=0) /栈为空The stack is empty!return ; /返回空格else /栈不为空y=s-top; /取出栈顶元素top-1; /栈顶指示移动return y; /出栈操作int quinit(queuestru *q)q-front=0;rear=0; /初始化为一个空的循环队列int quempty(queuestru *q)if(q-front=q-r

8、ear) /队头和队尾相等 /判断队列是否为空int enqueue(queuestru *q,char e)if(q-rear+1)%m=q-front) /队列已满The queue is overflow!queueq-rear=e;rear=(q-rear+1)%m; /移动队尾指针 /入队操作char dequeue(queuestru *q)char f;rear) /队列为空The queue is empty!f=q-front; /取出队首元素front=(q-front+1)%m; /移动对头指针return f; /出队操作 typedef struct node cha

9、r data; struct node *next;node; node *top; unsigned int size; stack;typedef struct node *front; node *back; queue;char pops(stack *a) node *tf=NULL; char rt=0; if (a-size) tf=a- a-top=a- -a-size; rt=tf-data; free(tf); return rt;char popq(queue *a)front;front=a-front-void push(stack *a,const char c)

10、node *t=(node*)malloc(sizeof(node); if (t) t-data=c;next=a-top=t; +a-void push_back(queue *a,const char c)next=NULL;a-back=t; else back-next=t;int isempty(void *a,int tp) if (tp=1) return !(stack *)a)-size); else return !(queue *)a)-void initqs(void *a,int tp) if (tp=1) (stack*)a)-top=NULL;size=0; e

11、lse (queue*)a)-front=(queue*)a)-back=NULL;void del(void *a,int tp) node *t; while (stack*)a)-top) t= (stack*)a)-top=(stack*)a)- free(t); free(a); else while (queue*)a)-front) t= (queue*)a)-int chk(void) char ch; int fg=1,rt=0; stack *a=(stack*)malloc(sizeof(stack); queue *b=(queue*)malloc(sizeof(que

12、ue);a|!b) fprintf(stderr,MEMORY ERROR exit(-1); initqs(a,1); initqs(b,0); puts(Enter a string ,end with while (ch=getchar()!) push(a,ch); push_back(b,ch); while (!isempty(a,1)&!isempty(b,0) if (pops(a)!=popq(b) fg=0; if (fg&isempty(b,0) rt= 1; del(a,1); del(b,0);int main(void) if (chk() puts(YES els

13、e puts(NO return 0;/- 用栈实现了判断回文数的操作,即把字符串依次入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:#define EMPTY 0#define FULL 10000#define MAX 10000typedef char data;typedef struct elem data d;typedef struct stack int cnt; /栈操作函数void initialize(stack *stk)bool empty(const stack *stk) return stk-bool full(const st

14、ack *stk)void push(data d, stack *stk)full(stk) p = (elem *)malloc(sizeof(elem);data pop(stack *stk)empty(stk) d = stk- return d; data inputMAX; /初始化临时栈 scanf( /输入字符串 while (inputi ! /字符串入栈 push(inputi, &temp) /字符依次出栈和字符数组比较,判断是否回文数 if (temp.top-d = inputflag) pop(& printf( if (empty(&本文来自CSDN博客,转载请

15、标明出处:我自己写了一个,你看看/*用栈和队列进行回文判断输入字符以结束*/*定义一个栈*/typedef struct Stackint size;char * Base;char * Top;Stack;/*创建一个栈*/void CreateStack(Stack * S,int size)S - size = size; Base = (char *)malloc(size); Top = S - Base;/*推入一个元素*/void Push(Stack * S,char c)/*栈满了,不能插入了*/if(S - Top - S - Base = S - size)Stack i

16、s full and cant push!return;*(+S - Top) = c;void Pop(Stack * S)/*栈空了*/ Top = S - Base)Stack is empty! Top-;Stack S;int Begin;CreateStack(&S,100);Begin = 0;while(1)scanf(%c,&c);if(c = & !Begin)Begin = 1;if(Begin)if(*(S.Top) = c)Pop(&S);Push(&S,c);if(S.Top = S.Base)oknfailngetch();用数据结构的栈和队列 写 回文判断_参考答案:/- node *tf=null;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1