收藏 分享(赏)

回文实验报告.doc

上传人:精品资料 文档编号:10546485 上传时间:2019-11-27 格式:DOC 页数:9 大小:828KB
下载 相关 举报
回文实验报告.doc_第1页
第1页 / 共9页
回文实验报告.doc_第2页
第2页 / 共9页
回文实验报告.doc_第3页
第3页 / 共9页
回文实验报告.doc_第4页
第4页 / 共9页
回文实验报告.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、数据结构上机指导实验题目回文判断的算法班级 通信 143 姓名 刘峻霖 学号 2014101108 日期 2015 年 6 月 17 日星期三 数据结构上机指导一、 需求分析1 程序的功能: 实现对字符序列是否是一个回文序列的判断2 输入输出的要求: 从键盘读入一组字符序列,判断是否是回文,并将结果显示在屏幕上3 测试数据:回文字符序列输入:非回文字符序列输入:二、 概要设计1 本程序所用的抽象数据类型的定义:typedef structchar itemSTACKSIZE;int top;SqStack;typedef struct QNodechar data;struct QNode *

2、next;LQNode, *PQNode;typedef structPQNode front,rear;数据结构上机指导 LinkQueue;2 主程序的流程及各程序模块之间的层次关系。(1)int InitStack(SqStack *S):栈初始化模块,即初始化一个空栈,随后对该空栈进行数据的写入操作; (2)int Push(SqStack *s, char data):入栈操作,即给空栈中写入数据,数据长度有宏定义给出; (3)int Pop(SqStack *s, char *data):出栈操作,即将栈中的数据输出,由于栈的操作是先进后出,因此,出栈的数据是原先输入数据的逆序;

3、(4)int InitQueue(LinkQueue *q):队列初始化,即初始化一个空队列,最后对该空队列进行数据的写入操作; (5)int EnQueue(LinkQueue *q, char item):入队操作,即给空队列中写入数据,数据长度一样有宏定义给出; (6)int DeQueue(LinkQueue *q, char *item):出队操作,即将队列中的数据输出,由于队列的操作是先进先出,因此,出队的数据室原先输入数据的正序; (7)int main():主函数,用于调用前面的模块,进行出队数据与出栈数据的比较,判断输入的序列是否是回文序列。模块之间关系及其相互调用的图示:三

4、、 详细设计数据结构上机指导1 采用 c 语言定义相关的数据类型整形,字符型,指针类型,聚合类型,自定义类型2 写出各模块的伪码算法:参照源程序(1)int InitStack(SqStack *S)(2)int Push(SqStack *s, char data)(3)int Pop(SqStack *s, char *data) (4)int InitQueue(LinkQueue *q)(5)int EnQueue(LinkQueue *q, char item)(6)int DeQueue(LinkQueue *q, char *item) 四、 调试分析1 调试中遇到的问题及对问题

5、的解决方法:问题:程序出现未知错误。方法:在感觉容易出错的地方或者是已经出错的地方前面打断点,进一步调试。2 算法的时间复杂度和空间复杂度。时间复杂度:T(n) = O(n)五、 使用说明及测试结果回文字符输入:非回文字符输入:六、 源程序(带注释)#include #include #include 数据结构上机指导#define STACKSIZE 100typedef structchar itemSTACKSIZE;int top;SqStack;/*顺序栈的定义*/typedef struct QNodechar data;struct QNode *next;LQNode, *PQ

6、Node;typedef structPQNode front,rear; LinkQueue;/*链队列的定义*/int InitStack(SqStack *S);/*初始化顺序栈*/int StackEmpty(SqStack S);/*判断是否为空栈*/int Push(SqStack *s, char data);/*入栈*/int Pop(SqStack *s, char *data);/*出栈*/int InitQueue(LinkQueue *q);/*初始化链队列*/int QueueEmpty(LinkQueue q);/*判断是否为空队列*/int EnQueue(Lin

7、kQueue *q, char item);/*入队*/int DeQueue(LinkQueue *q, char *item);/*出队*/int TraverseQueue(LinkQueue q);/*遍历*/int InitStack(SqStack *S) /*初始化顺序栈*/S-top = -1;return 1;int StackEmpty(SqStack S)/*判断是否为空栈*/if(S.top = -1) return 1;else return 0;int Push(SqStack *s, char data)/*入栈*/if(s-top = STACKSIZE - 1

8、)数据结构上机指导printf(“n 栈已满,不能完成入栈操作!“);return 0;s-top+;s-items-top = data;return 1;int Pop(SqStack *s, char *data)/*出栈*/if (s-top = -1)printf(“n 堆栈已空,不能完成出栈操作!“);return 0;*data = s-items-top;s-top-;return 1;int InitQueue(LinkQueue *q)/*初始化链队列*/q-front = q-rear = (PQNode)malloc(sizeof(LQNode);if(!q-front

9、)printf(“n 初始化队列失败!“);return 0;q-front-next = NULL;return 1;int QueueEmpty(LinkQueue q)/*判断是否为空队列*/if (q.front = q.rear) printf(“n 队列为空!“); return 1;else return 0;数据结构上机指导int EnQueue(LinkQueue *q, char item)/*入队*/PQNode p;p = (PQNode)malloc(sizeof(LQNode);if(!p)printf(“n 内存分配失败“);return 0;p-data = i

10、tem;p-next = NULL;q-rear-next = p;q-rear = p;return 1;int DeQueue(LinkQueue *q, char *item)/*出队*/PQNode p;if(q-front = q-rear)printf(“n 队列已空,不能出队“);return 0;p = q-front-next;*item = p-data;q-front-next = p-next;free(p);if(q-rear = p) /*若删除的为最后一个结点,移动队尾指针*/q-front = q-rear;return 1;int TraverseQueue(

11、LinkQueue q)/*遍历*/PQNode pos;if(q.front = q.rear)printf(“n 队列为空!“);return 0;数据结构上机指导pos = q.front-next;printf(“nHere is the string:“);while(pos != NULL)printf(“%c“, pos-data);pos = pos-next;printf(“n“);return 1;int main()int i,len,count1 = 0;char str1100,ch,ch1;LinkQueue lq1,lq2;SqStack sq;printf(“请

12、输入字符:“);scanf(“%s“, len = strlen(str1);InitQueue(InitQueue(InitStack(for(i=0;ilen;i+)EnQueue(TraverseQueue(lq1);for(i=0;ilen;i+)DeQueue(Push(EnQueue(for(i=0;ilen;i+)Pop(EnQueue(TraverseQueue(lq2);数据结构上机指导for(i=0;ilen;i+)DeQueue(DeQueue(if(ch1 != ch) count1+;if(count1 = 0)printf(“n 该字符串为回文“);elseprintf(“n 该字符串不是回文“);return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报