回文串实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

回文串实验报告回文串实验报告PAGE2PAGE11回文串实验报告课程名称:数据结构实验名称:单链表学生姓名:杜克强学生学号:xxxx07092427PAGEPAGE1实验一回文串的基本操作及其应用一、实验目的1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、掌握栈和队列的特点,即后进先出和先进先出的原则。3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。二、实验内容和要求[问题描述]对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。[基本要求](1)数据从键盘读入;(2)输出要判断的字符串;(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。[测试数据]由学生任意指定。三、实验步骤1.需求分析本演示程序用C语言编写,完成对一个字符串是否是回文字符串的判断①输入一个任意的字符串;②对输入的字符串进行判断是否为回文串;③输出判断结果;④测试数据:A.依次输入“abccba”,“asddas”等数据;B.输出判断结果“Yes”,“No”等算法设计算法思想:把字符串中的字符逐个分别存储到队列和堆栈中,然后逐个出队和出栈并比较出队列的数据元素和退栈的数据元素是否相等,若相等则是会文,否则不是。模块设计intPalindrome_Test()判断字符序列是否为回文串;Statusmain()主函数;StatusCreatStack(SqStackS)创建一个栈;StatusPush(SqStackS,SElemTypee)入栈;StatusPop(SqStackS,SElemTypee)出栈;StatusCreatQueue(LinkQueueQ)创建一个队列;StatusEnQueue(LinkQueueQ,QElemTypee)入队;StatusDeQueue(LinkQueueQ,QElemTypee)出队;模块之间关系及其相互调用的图示?4、数据存储结构图五、调试分析一、实验结果图2实验结果总结通过做回文串实验让我同时用到了栈和队列两种结构,让我对这两种结构有了一个比较深入的了解和应用,对我以后的编程产生了比较深远的影响。源程序(带注释)//创建栈StatusCreatStack(SqStackS){S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;}//创建队列tatusCreatQueue(LinkQueueQ){//建立一个空的链式栈Q.front=Q.rear=(QNodePtr)malloc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);Q.front-next=NULL;returnOK;}//入栈StatusPush(SqStackS,SElemTypee){if(S.top-S.base=S.stacksize){//栈满,追加存储空间S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base)exit(OVERFLOW);//存储空间分配失败S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;returnOK;}//入队StatusEnQueue(LinkQueueQ,QElemTypee){QNodePtrp;p=(QNodePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;returnOK;}//出栈StatusPop(SqStackS,SElemTypee){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}//出队StatusDeQueue(LinkQueueQ,QElemTypee){QNodePtrp;if(Q.front==Q.rear)returnERROR;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear==p)Q.rear=Q.front;free(p);returnOK;}//判断是否为回文串intPalindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0{SqStackS;LinkQueueQ;CreatStack(S);CreatQueue(Q);charc;SElemTypea,b;while((c=getchar())!=@){Push(S,c);EnQueue(Q,c);//同时使用栈和队列两种结构}while(S.top!=S.base){Pop(S,a);DeQueue(Q,b);if(a!=b)returnERROR;}returnOK;}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功