栈与队列数据结构 课程设计

上传人:壹****1 文档编号:395127612 上传时间:2022-11-29 格式:DOCX 页数:13 大小:103.61KB
返回 下载 相关 举报
栈与队列数据结构 课程设计_第1页
第1页 / 共13页
栈与队列数据结构 课程设计_第2页
第2页 / 共13页
栈与队列数据结构 课程设计_第3页
第3页 / 共13页
栈与队列数据结构 课程设计_第4页
第4页 / 共13页
栈与队列数据结构 课程设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《栈与队列数据结构 课程设计》由会员分享,可在线阅读,更多相关《栈与队列数据结构 课程设计(13页珍藏版)》请在金锄头文库上搜索。

1、实验报告课程名称数据结构实验及课程设计实验项目 栈和队列的定义及操作实验仪器PC机一台系别信息管理学院专业信息安全班级/学号学生姓名郭瑞实验日期2010-11-19成 绩指导教师林小茶北京信息科技大学计算机信息管理学院(课程上机)实验报告实验课程名称计专业信息安全班级信安0901 学号 2009012225姓名:郭瑞成绩:实验名称线性表操作的实现实验地点小营机房实验时间1.实验目的:(1) 掌握栈的顺序存储和链式存储的概念。(2) 掌握队列的顺序存储和链式存储的概念。(3) 熟练编写相关的程序。2. 实验内容:编写并调试顺序栈、单链表表示的栈、循环队列、单链表表示的队列的所有 操作,并编写主函

2、数对这些函数进行调试。主函数中要有针对解决实际问题的程 序,如回文问题和进制转换问题等。3. 实验要求:1、预先写好程序。2、记录调试过程遇到的错误和改正的方法。3、程序完成后提交到学院的服务器上。4、源程序代码粘贴到本报告的最后。4.实验准备:5.实验过程:顺序栈进制转换#includestdio.h #includestdlib.h #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define ERROR 0#define OVERFLOW -2#define OK 1typedef int Status;typedef int

3、 SElemType;typedef struct int *base;int *top;int stacksize; SqStack;int InitStack(SqStack &S)S.base=(SElemType *) malloc(STACK_INIT_SIZE*sizeof(SElemType); 讦(!S.base) exit (OVERFLOW);S.top=S.base;S.stacksize= STACK_INIT_SIZE; return OK;Status Push(SqStack & S,SElemType e) if (S.top-S.base=S.stacksiz

4、e)S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); 讦(!S.base) exit (OVERFLOW);S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;*(S.top)=e;S.top+;return OK;Status Pop(SqStack & S,SElemType &e)讦(S.top=S.base) return ERROR;e=*(S.top-l);(S.top)-;return OK;Status Get

5、Top(SqStack S,SElemType &e)讦(S.top=S.base) return ERROR;e=*(S.top-1);return OK;Status StackEmpty(SqStack S)if (S.top=S.base) return OK;return ERROR;void main()SqStack S;int N,e;InitStack(S);printf(请输入一个数字:n);scanf(%d, &N);while(N)Push(S,N%16);N=N/16;while(!StackEmpty(S)Pop(S,e); printf(%d,e);printf(

6、n);单链表表示的栈#includestdio.h#includestdlib.h#define ERROR 0#define OVERFLOW -2#define OK 1#define TRUE 1#define FALSE 0typedef int Status; typedef struct Snode int data;struct Snode *next; *LinkStack;void InitStack(LinkStack &S)S=NULL;Status Push(LinkStack &S,int e)LinkStack p; p=(LinkStack) malloc(siz

7、eof(Snode); 讦(p=NULL) return ERROR; p-data=e;p-next=S;S=p; return OK;Status Pop(LinkStack & S,int &e)LinkStack p;讦(S=NULL) return ERROR;p=S;.098765432*ress any key to continuee=S-data;S=S-next; free(p); return OK;Status StackEmpty(LinkStack S) 讦(S=NULL) return TRUE; return FALSE; void main() int e;

8、LinkStack S; int i;InitStack(S);for (i=l;iv=10;i+)Push(S,i); printf(nn); while (!StackEmpty(S) Pop(S,e);printf(%d ,e); printf(n); 循环队列#includestdio.h #includestdlib.h #define ERROR 0 #define OVERFLOW -2 #define OK 1#define MAXQSIZE 100 typedef int Status;typedef int QElemType;typedef structint *base

9、;int front;int rear; SqQueue;int InitQueue(SqQueue &Q)Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType); 讦(!Q.base) exit (OVERFLOW);Q.front=Q.rear=0;return OK;Status EnQueue(SqQueue & Q,QElemType e)讦(Q.rear+l)%MAXQSIZE=Q.front)return ERROR ;Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXQSIZE;return OK;Sta

10、tus DeQueue(SqQueue & Q,int &e)讦(Q.rear=Q.front) return ERROR;e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;return OK;void main() int e; SqQueue Q;int i;InitQueue(Q);for (i=1;iv20;i+)EnQueue(Q,i);printf(n);for(i=1;inext=NULL;return OK;Status EnQueue(LinkQueue & Q,QElemType e)QueuePtr p;p=(QueuePtr)ma

11、lloc(sizeof(QNode); if (!p) exit (OVERFLOW); p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;return OK;Status DeQueue(LinkQueue & Q,QElemType &e) QueuePtr p;f (Q.rear=Q.front) return ERROR; p=Q.front-next;e=p-data;Q.front-next=p-next;if (Q.rear=p)Q.rear=Q.front;free(p); return OK;void main() int i;int x

12、;LinkQueue Qu;InitQueue(Qu);for (i=l;iv20;i+)EnQueue(Qu,i);while (DeQueue(Qu,x)=OK) printf(%dt,x);printf(n); 回文#include vstdio.h #include vmalloc.h #include #include vstdlib.h #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int boolean; typedef int SElemType;typedef int SqQueue;typedef int QElemType;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct int *base;int *top;int stacksize; SqStack;Status InitStack(SqStack *S)/*构造一个空栈S */(*S).base=(SElemType *)malloc(STACK

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号