ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:19KB ,
资源ID:18816563      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18816563.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构堆栈实验报告docWord下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构堆栈实验报告docWord下载.docx

1、 /*初始化操作:*/ void StackInitiate(LSNode *head)/*初始化带头结点链式堆栈*/if(*head = (LSNode *)malloc(sizeof(LSNode) = NULL) exit(1); (*head)-next = NULL; /*判非空操作:int StackNotEmpty(LSNode *head)/*判堆栈是否非空,非空返回1;空返回0*/if(head-next = NULL) return 0;else return 1; /*入栈操作:int StackPush(LSNode *head, DataType x)/*把数据元素x

2、插入链式堆栈head的栈顶作为新的栈顶 */ LSNode *p; if(p = (LSNode *)malloc(sizeof(LSNode) = NULL) printf(内存空间不足无法插入! n);return 0; p-data = x;p-next = head-next; /*新结点链入栈顶*/ head-next = p;/*新结点成为新的栈顶*/ return 1; /*出栈操作:int StackPop(LSNode *head, DataType *d)/*出栈并把栈顶元素由参数d带回*/LSNode *p = head-if(p = NULL)堆栈已空出错! head-

3、next = p-/*删除原栈顶结点*/ *d = p-data; /*原栈顶结点元素赋予d*/ free(p); /*释放原栈顶结点内存空间*/ return 1; /*取栈顶数据元素操作:int StackTop(LSNode *head, DataType *d)/*取栈顶元素并把栈顶元素由参数d带回*/return 1; /*撤销*/ void Destroy(LSNode *head)LSNode *p, *p1; p = head;while(p != NULL)p1 = p;p = p-free(p1);(2)主函数程序:#includetypedef int DataType;

4、#include LinStack.hvoid main(void) LSNode *myStack;int i, x;StackInitiate(&myStack);for(i=0;i if(StackPush(myStack,i+1)=0)error!nreturn;if(StackTop(myStack, &x)=0)elseThe element of local top is :%dn,x); printf( The sequence of outing elements is: while(StackNotEmpty(myStack)StackPop(myStack, &x);%d

5、 , x); Destroy(myStack);This program is made byn 运行结果为:(3)设计结构体和测试函数如下:typedef structchar taskName10;#includevoid main()LSNode *myStack;FILE *fp;DataType task,x;if(fp=fopen(task.txt,r)=NULL)不能打开文件task.txt!exit(0);while(!feof(fp)fscanf(fp,%s %d,&task.taskName,&task.taskNo); StackPush(myStack,task);fc

6、lose(fp);while(StackNotEmpty(myStack)StackPop(myStack,&%s %dn,x.taskName,x.taskNo);This program is made by n运行结果为:3-19(1)typedef structDataType queueMaxQueueSize;int front; /*队头指针*/int count;/*计数器*/ SeqCQueue;/*初始化操作:QueueInitiate(SeqCQueue *Q) */void QueueInitiate(SeqCQueue *Q)/*初始化顺序循环队列Q */Q-fron

7、t=0; /*定义初始队头指针下标*/ Q-count=0;/*定义初始计数器值*/*判非空否操作:QueueNotEmpty(SeqCQueue Q)*/ int QueueNotEmpty(SeqCQueue Q)篇二:数据结构栈和队列实验报告一、实验目的和要求(1)理解栈和队列的特征以及它们之间的差异,知道在何时使用那种数据结构。(2)重点掌握在顺序栈上和链栈上实现栈的基本运算算法,注意栈满和栈空的条件。(3)重点掌握在顺序队上和链队上实现队列的基本运算算法,注意循环队队列满和队空的条件。(4)灵活运用栈和队列这两种数据结构解决一些综合应用问题。二、实验环境和方法实验方法:(一)综合运用

8、课本所学的知识,用不同的算法实现在不同的程序功能。(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。(三)根据实验内容,编译程序。实验环境:Windows xpVisual C+6.0三、实验内容及过程描述实验步骤: 进入Visual C+ 6.0集成环境。 输入自己编好的程序。 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 运行程序并分析运行结果是否合理。在运行是要

9、注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。编译以下题目的程序并调试运行。1)、编写一个程序algo3-1.cpp,实现顺的各种基本运算,并在此基础上设计一程序并完成如下功能:(1)初始化栈s;(2)判断栈s是否非空; 序栈个主(3)依次进栈元素a,b,c,d,e;(4)判断栈s是否非空;(5)输出出栈序列;(6)判断栈s是否非空;(7)释放栈。 图3.1 Proj3_1 工程组成本工程Proj3_1的组成结构如图3.1所示。本工程的模块结构如图3.2所示。图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。图3.2 Proj3_1工程的

10、程序结构图其中包含如下函数:InitStack(SqStack *&s) /初始化栈SDestroyStack(SqStack *&s) /销毁栈sStackEmpty(SqStack *s) /判断栈空Push(SqStack *&s,ElemType e) /进栈Pop(SqStack *&s,ElemType &e) /出栈GetTop(SqStack *s,ElemType &e) /取栈顶元素对应的程序如下:/文件名:algo3-1.cpp#define MaxSize 100typedef char ElemType;ElemType dataMaxSize;int top; /栈

11、顶指针 SqStack;void InitStack(SqStack *& s=(SqStack *)malloc(sizeof(SqStack);s-top=-1; /栈顶指针置为-1void DestroyStack(SqStack *&free(s);bool StackEmpty(SqStack *s) /判断栈空return(s-top=-1);bool Push(SqStack *& if (s-top=MaxSize-1) /栈满的情况,即栈上溢出return false;top+; /栈顶指针增1datas-top=e; /元素e放在栈顶指针处return true;bool

12、Pop(SqStack *&top=-1) /栈为空的情况,即栈下溢出e=s-top; /取栈顶指针元素的元素top-;/栈顶指针减1bool GetTop(SqStack *s,ElemType &设计exp3-1.cpp程序如下 /文件名:exp3-1.cpp ElemType dataMaxSize;extern void InitStack(SqStack *&s);extern void DestroyStack(SqStack *&extern bool StackEmpty(SqStack *s);extern bool Push(SqStack *&s,ElemType e);

13、extern bool Pop(SqStack *&e);extern bool GetTop(SqStack *s,ElemType &void main()ElemType e;SqStack *s;栈s的基本运算如下: (1)初始化栈snInitStack(s); (2)栈为%sn,(StackEmpty(s)?空:非空); (3)依次进栈元素a,b,c,d,enPush(s,abcde (4)栈为%sn (5)出栈序列:while (!StackEmpty(s)Pop(s,e);%c ,e); (6)栈为%sn (7)释放栈nDestroyStack(s);运行结果如下:2)、编写一个

14、程序algo3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始化链栈s;(2)判断链栈s是否非空;(3)依次进栈a,b,c,d,e;(4)判断链栈s是否非空;(5)输出链栈长度;(6)输出从栈底到栈顶元素;(7)输出出队序列;(8)判断链栈s是否非空;图3.3 Proj3_2工程组成(9)释放队列。本工程Proj3_2的组成结构如图3.3所示。本工程的模块结构如图3.4所示。 图3.4 Proj3_2工程的程序结构图 InitStack(LiStack *&s) /初始化栈sDestroyStack(LiStack *&s) /销毁栈StackEmpt

15、y(LiStack *s) /判断栈是否为空Push(LiStack *&Pop(LiStack *&GetTop(LiStack *s,ElemType &algo3-2.cpptypedef struct linknodeElemType data; /数据域篇三:数据结构栈与队列的实验报告 数据结构 栈与队列实验报告 学院:数学与计算机学院 班级:计算机科学与技术 姓名:杨理源 学号:XX 实验三栈与队列 一、实验目的:(1)熟练掌握栈和队列的结构以及这两种数据结构的特点、栈与队列的基本操作。(2)能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法;(3)熟练掌

16、握链队列和循环队列的基本运算,并特别注意队列满和队列空的判断条件和描述方法;(4)掌握栈的应用;二、实验要求:(1) 给出程序设计的基本思想、原理和算法描述。(2) 对源程序给出注释。(3) 记录程序的运行结果,并结合程序进行分析。三、程序设计的基本思想、原理和算法描述:四、实验内容:1、利用栈的基本操作将一个十进制的正整数转换成R进制数据,并将其转换结果输出。 #include#define stack_init_size 100#define stackincrement 10typedef struct sqstack int *base;int *top;int stacksize;

17、sqstack;int StackInit(sqstack *s)s-base=(int *)malloc(stack_init_size *sizeof(int);if(!s-base)top=s-base;stacksize=stack_init_size;int Push(sqstack *s,int e)if(s-top-s-base=s-stacksize)base=(int *)realloc(s-base,(s-stacksize+stackincrement)*sizeof(int);if(!base+s-stacksize;stacksize+=stackincrement;

18、*(s-top+)=e;return e;int Pop(sqstack *s,int e)top=s-e=*-s-top;int stackempty(sqstack *s)int conversion(sqstack *s) int n,e=0,flag=0;输入要转化的十进制数:nscanf(%dn); printf(要转化为多少进制:2 进制、8 进制、16 进制填数字! scanf(flag);将十进制数%d 转化为%d 进制是:,n,flag);while(n)Push(s,n%flag);n=n/flag; while(!stackempty(s) e=Pop(s,e);switch(e)case 10: printf(Abreak;case 11:Bcase 12:Ccase 13:Dcase 14:Ecase 15:Fdefault:int main()sqstack s;StackInit(&conversion(& 2、回文数判断 #define MAX 50#define FALSE 0#define TURE 1/定义栈char elemMAX;SeqStack;/定义循环队列char elementMAX;int rear;SeqQuene;/初始化栈void InitStack(SeqStack *S) S-top = -1;/构造一个

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1