kl800.com省心范文网

回文序列判断(运用栈以及队列完成)

回文序列判断实验报告

系别: 系别:通信工程 班级: 班级: 0905 班 学号: 学号: 18 号

1.实验目的:熟悉栈的各项操作 实验内容: 2.实验内容:
利用栈的操作完成读入的一个以@结尾的字符序列是否是回文序列的判断. 回文序列即正读与反读都一样的字符序列; 例如:123&321@是; 123&4321@、123&312@不是 算法思想:从键盘上读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后 一个字符为@停止输入, 因为要满足特定的要求: 序列 1&序列 2, 故设置夜歌标记量 falg=1, 判断输入的元素个数是否为奇数个,若为偶数个则令 flag=0,若为奇数个继续判断栈的中 间元素是否为&,若不是则令 flag=0,若是,将栈和队列中的元素依次出列,判断是否相等, 若不相等则令 flag=0,最后将 flag 的值返回给主函数, flag 被修改为 0 说明不是回文序 若 列,否则反之! ! 判断回文序列的流程图:

初始化栈 InitS(&s) 初始化队列 InitQ(&q) 当 ch!='@'时 ch=getch() Y ch!='@' printf("%c",ch) push(&s,ch) enter(&q,ch) m++ Y Y m%2!=0 s->e[m/2]=='&' i=1 当 i<(m+1)/2 时 pop(&s,&ch1) deleteq(&q,&ch2) Y ch1!=ch2 flag=0 i++ retun(flag) N flag =0 N N flag=0 N

3.实验感想与体会 .
通过本次的上机, 对栈的各项基本操作都有了更好的掌握, 同时明白了一些小的细节问题可 能会影响到整个程序的正确的运行, 本次的实验我通过了运用栈和队列, 可以说对队列的一 些基本的操作也得以了巩固和提高!更加体会到,自己写程序上机操作的重要性,它要比课 本上学的要多得多!

4.附录(源代码及运行图) .附录(源代码及运行图) 及运行图
#include<stdio.h>

#define MAX 100 typedef struct//栈结构体 { char e[MAX]; int top; }SeqStack; typedef struct NODE//队列结构体 { char d; struct NODE *next; }LinkQN; typedef struct//封装头指针为指针 { LinkQN *front; LinkQN *rear; }LinkQ; InitS(SeqStack *s)//初始化顺序栈 { s->top=-1; } int push(SeqStack *s,char ch)//入栈 { if(s->top==MAX-1) return(0); s->top++; s->e[s->top]=ch; return(1); } int pop(SeqStack *s,char *x)//出栈 { if(s->top==-1) return(0); *x=s->e[s->top]; s->top--; return(1); } void InitQ(LinkQ *q)//链队列初始化 { q->front=(LinkQN *)malloc(sizeof(LinkQN)); if(!q->front) { printf("分配空间失败!");

} q->rear=q->front; q->front->next=NULL; } int enter(LinkQ *q,char ch)//入队 { LinkQN *np; np=(LinkQN *)malloc(sizeof(LinkQN)); if(!np) return(0); np->d=ch; np->next=NULL; q->rear->next=np; q->rear=np; return(1); } int deleteq(LinkQ *q,char *c)//出队 { LinkQN *p; if(q->front==q->rear) return(0); p=q->front->next; q->front->next=p->next; if(q->rear==p) q->rear=q->front; *c=p->d; free(p); return(0); } int huiwen(SeqStack *s,LinkQ *q)//回文判断 { int flag=1,m=0,t=1; int i; char ch1,ch2,ch; InitS(&s); InitQ(&q); printf("请输入字符序列当输入字符@时输入结束:\n"); while(ch!='@') { ch=getch(); if(ch!='@') { printf("%c",ch); push(&s,ch); enter(&q,ch); m++;

} } printf("\n 输入完成!\n"); printf("按任意键予以判断!\n"); getch(); if(m%2) { if(s->e[m/2]=='&') { for(i=1;i<(m+1)/2;i++) { pop(&s,&ch1); deleteq(&q,&ch2); if(ch1!=ch2) flag=0; } } else flag=0; } else flag=0; return(flag); } main() { SeqStack *s; LinkQ *q; int m; m=huiwen(*s,&q); printf("\n"); if(m) printf("该字符序列是回文序列!\n"); else printf("该字符序列不是回文序列!\n"); }


回文序列判断(运用栈以及队列完成).doc

回文序列判断(运用栈以及队列完成) - 判断依次读入的一个以@为结束符的字母序列

数据结构C语言回文判断(运用栈以及队列完成).doc

数据结构C语言回文判断(运用栈以及队列完成)_IT/计算机_专业资料。数据结构C语言...是回文序列; (8)void main():主函数,用于调用前面的模块,并输出最终的判断...

第3章 栈与队列习题参考答案.doc

第3章 队列习题参考答案_农学_高等教育_教育...状态是通过数学上的 求模 (或 取余) 运算来实现...编写一个函数判断一个字符序列是否为回文序列,所谓...

用栈和队列判断回文.doc

用栈队列判断回文_计算机软件及应用_IT/计算机_专业资料。实验二 栈和队列 ...,如:入栈与出栈,入队与出队 等运算在顺序存储结构和链式存储结构上的实现。 ...

栈与队列习题参考答案.doc

队列习题参考答案_数学_高中教育_教育专区。...状态是通过数学上的 求模 (或 取余) 运算来实现...编写一个函数判断一个字符序列是否为回文序列,所谓...

栈和队列实验报告.doc

5.运用栈队列实现回文序列判断。 二、实验要求 1.预习 C 语言中结构体的

利用链式堆栈和队列实现回文判断.doc

队列先进先出的特点和链式堆栈的先进后出的特点可以很容易的判断一个 字符串是不是回文的,本实验利用了这些特点完成队列和堆栈的创建和初始化、 定义、入队入...

栈和队列的基本操作及其应用(回文判断).doc

,如:入栈与出栈,入队与出队等运算在顺序 存储结构和链式存储结构上的实现。 ...回文序列判断(运用栈以及... 6页 1下载券 栈和队列判断回文 6页 2下载...

数据结构回文序列判断实验报告.doc

数据结构回文序列判断实验报告 - 洛阳理工学院实验报告 系别 课程名称 实验名称 实验目的: 熟悉掌握队列的特点,掌握与应用队列的基本操作算法,训练和提 高...

第3章 栈与队列习题参考答案范文.doc

第3章 队列习题参考答案范文_数学_高中教育_...状态是通过数学上的 求模 (或 取余) 运算来实现...编写一个函数判断一个字符序列是否为回文序列,所谓...

栈和队列判断回文.doc

队列判断回文 - 语言版数据结构) (C 语言版数据结构)利用队列判断回文 (2010-11-03 11:51:45) 标签: it // File Name: palindrome...

第3章 栈和队列(习题).doc

利用两个栈 sl,s2 模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判...五、算法设计题 1、假设称正读和反读都相同的字符序列为“回文” ,例如, “...

C课设(判断回文)报告.doc

11 1 一、需求分析⒈ 用栈及队列的基本操作完成对字符串是否为回文判断,其中

...:检测并输出一个文档中的回文单词。用栈和队列.doc

课程设计:回文:检测并输出一个文档中的回文单词。用栈和队列_理学_高等教育_教育专区。回文问题:检测并输出一个文档中的回文单词。(要求用栈队列实现) ...

回文判断实验二.doc

问题描述 利用队列判断字符串是否为回文。 称正读与反读都相同的字符序列为 “回文序列。要求利用队列的基本算法实现判断一个字符串是否为回文和 ...

实验报告(栈和队列).doc

分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序: 判断一个字符序列 是否是...先写栈,再写队列,最后调用主函数判断是否回文并输出,运 行结果显示可以实现实验...

栈和队列的应用(算法与数据结构课程设计).doc

二、基本要求 1、选择顺序栈和链队列,完成回文判断、字符串的逆置; 2、选择链栈和循环队列,完成回文判断、字符串的逆置; 3、运用栈队列,完成简易停车场管理...

13131116钱剑滨_队列和栈判断回文.doc

2. 3. 分析栈和队列实现算法。 编写程序, 通过队列实现字符串正序输出, ...栈和队列的应用--回文的... 2页 1下载券 回文序列判断(运用栈以及... 6...

数据结构(C语言版)例题(第三章:栈和队列).doc

试写一个算法判别读入的 一个以'@'为结束符的字符序列是否是"回文"。 实现下列函数: Status Palindrome(char *word); 可使用栈 Stack 和队列 Queue 及其下列...

实验一 回文判断(已通过C++6.0).doc

实验一 回文判断(已通过C++6.0)_IT/计算机_专业资料。利用队列实现回文判断,元素入同时入队,出同时出队。利用的LIFO,队的FIFO的特性在出队出时判断...