1 / 13
文档名称:

数据结构堆栈与队列实验报告.doc

格式:doc   大小:48KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构堆栈与队列实验报告.doc

上传人:文库旗舰店 2019/9/10 文件大小:48 KB

下载得到文件列表

数据结构堆栈与队列实验报告.doc

文档介绍

文档介绍:数据结构堆栈与队列实验报告实验二堆栈和队列实验目的:;;;。实验原理:堆栈顺序存储结构下的基本算法;堆栈链式存储结构下的基本算法;队列顺序存储结构下的基本算法;队列链式存储结构下的基本算法;实验内容:第一题链式堆栈设计。要求(1)用链式堆栈设计实现堆栈,堆栈的操作集合要求包括:初始化StackInitiate(S),非空否StackNotEmpty(S),入栈StackiPush(S,x),出栈StackPop(S,d),取栈顶数据元素StackTop(S,d);(2)设计一个主函数对链式堆栈进行测试。测试方法为:依次把数据元素1,2,3,4,5入栈,然后出栈并在屏幕上显示出栈的数据元素;(3)定义数据元素的数据类型为如下形式的结构体,Typedefstruct{chartaskName[10];inttaskNo;}DataType;首先设计一个包含5个数据元素的测试数据,然后设计一个主函数对链式堆栈进行测试,测试方法为:依次吧5个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。第二题对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求:(1)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空;(2)编写主函数进行测试。程序代码:第一题:(1)源程序""如下:#defineNULL0typedefstructsnode{DataTypedata;structsnode*next;}LSNode;/*(1)初始化StackInitiate(LSNode**head)*/voidStackInitiate(LSNode**head)/*初始化带头结点链式堆栈*/1{if((*head=(LSNode*)malloc(sizeof(LSNode)))==NULL)exit(1);(*head)->next=NULL;}/*(2)非空否StackNotEmpty(LSNode*head)*/intStackNotEmpty(LSNode*head)/*判断堆栈是否为空,非空返回1,否则返回0*/{if(head->next==NULL)return0;elsereturn1;}/*(3)入栈StackPush(LSNode*head,DataTypex)*/intStackPush(LSNode*head,DataTypex)/*把数据元素x插压入链式堆栈head的栈顶作为新的栈顶,*//*入栈成功返回1,否则返回0*/{LSNode*p;if((p=(LSNode*)malloc(sizeof(LSNode)))==NULL){printf("Thememoryspaceisnotenough!\n");return0;}p->data=x;p->next=head->next;/*新结点入栈*/head->next=p;/*新结点成为新的栈顶*/return1;}/*(4)出栈StackPop(SLNode*head,DataType*d)*/intStackPop(LSNode*head,DataType*d)/*出栈并把栈顶数据元素值带到参数d,*//*出栈成功返回1,否则返回0*/{LSNode*p;p=head->next;if(p==NULL){printf("TheStackhasbeenempty!\n");return0;}head->next=p->next;*d=p->data;free(p);return1;}/*(5)取栈顶数据元素StackTop(LSNode*head,DataType*d)*/intStackTop(LSNode*head,DataType*d)/*取栈顶数据元素并由参数d带回,*//*成功返回1,否则返回0*/{LSNode*p;p=head->next;2if(p==NULL){printf("TheStackhasbeenempty!\n");return0;}*d=p->data;return1;}/*(6)撤销动态申请空间Destroy(LSNode*head)*/voidDestroy(LSNode*head){LSNode*p,*p1;p=head;while(p!=NULL){p1=p;p=p->next;free(p1);}}(2)测试函数如下:#include<>/*该文件包含printf()函数*/#includ