数据结构与程序设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
滨江学院
《数据结构课程设计》
报告
院系计算机系
专业软件工程3
学生姓名何胜利
学号 20112344908
成绩
二O一三年11 月23日
目录
目录 (2)
回文检测 (3)
一、设计题目 (3)
二、设计目的 (3)
三、设计内容: (3)
四、程序流程图 (4)
五、源程序 (4)
六、软件测试报告 (9)
情报加密 (11)
一、设计题目 (11)
二、设计目的 (11)
三、设计内容 (11)
四、程序流程图 (12)
五、源程序 (12)
六、软件测试报告 (16)
图书管理系统 (17)
一、需求分析 (17)
二、概要设计 (17)
三、详细设计 (18)
四、调试分析 (20)
五、用户使用说明 (21)
六、测试结果 (21)
六、源程序 (22)
辅助系的荣光 (37)
一、需求分析 (37)
二、概要设计 (37)
三、详细设计 (37)
四、调试分析 (38)
五、用户使用说明 (38)
六、测试结果 (38)
七、源程序 (38)
回文检测
一、设计题目
设计一个程序,,对输入的字符串进行检测,以判断该字符串是否是回文数据,并输出判断结果。如:“abcxcba”或“abccba”都是回文数据。
二、设计目的
(1)利用栈和队列的原理设计上述题目;
(2)键盘输入字符串;
(3)键盘输出判断结果(如abcxcba和abccba是回文数据)。
三、设计内容:
利用栈先进后出的性质和队列先进先出的性质解决本题。
先将字符串全部入队,然后将一半(n/2)的字符出队并且压入栈中,如果字符总数为奇数则丢弃队列中第一个字符,然后将一个字符出队,一个字符出栈,比较,循环,结束。
四、程序流程图
五、源程序
// File Name: palindrome.h #ifndef PALINDROME
#define PALINDROME
#include
// 链式队列结构的定义typedef char ElemType;
typedef struct Node
{
char data; // 元素数据
struct Node *next;// 链式队列中结点元素的指针}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;// 队列头指针
QueuePtr rear;// 队列尾指针
}LinkQueue;
// 栈结构的定义
typedef struct Stack
{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
// 链式队列的基本操作
bool InitQueue(LinkQueue *Q);
bool EnQueue(LinkQueue *Q, ElemType e);
bool DeQueue(LinkQueue *Q, ElemType *e);
// 栈的基本操作
bool InitStack(SqStack *S);
bool Push(SqStack *S, ElemType e);
bool Pop(SqStack *S, ElemType *e);
#endif
// File Name: palindrome.cpp
#include
#include
#include "palindrome.h"
const int STACK_INIT_SIZE = 100; // 初始分配的长度const int STACKINCREMENT = 10; // 分配内存的增量//操作目的:初始化队列
//初始条件:无
//操作结果:构造一个空的队列
//函数参数:
//LinkQueue *Q 待初始化的队列
//返回值:
// bool 操作是否成功
/*------------------------------------------------------------*/
bool InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=(QueuePtr)malloc(sizeof (QNode));
if (!Q->front)
{
exit(0);
}
Q->front->next =NULL;
return true;
}
//操作目的:在队列末尾插入元素e
//初始条件:队列Q已存在
//操作结果:插入元素e作为队列新的尾结点
//函数参数:
//LinkQueue *Q 队列Q
//ElemType e 待插入的数据元素
//返回值:
//bool 操作是否成功
bool EnQueue(LinkQueue *Q, ElemType e)
{
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
if (!p)
{
exit(0);
}
p->data = e;
p->next = NULL;
Q->rear->next = p;
Q->rear = p;
return true;
}
//操作目的:删除链式队列的头结点
//初始条件:队列Q已存在
//操作结果:删除链式队列的头结点
//函数参数:
//LinkQueue *Q 队列Q
//ElemType *e 待插入的数据元素
//返回值:
//bool 操作是否成功
bool DeQueue(LinkQueue *Q, ElemType *e)
{
if (Q->front == Q->rear) //空队列
{