数据结构-堆栈和队列实验报告.docxVIP

  • 0
  • 0
  • 约4.83千字
  • 约 8页
  • 2023-11-20 发布于四川
  • 举报
实验报告 课程 数据构造 实验名称 实验二堆栈和队列 ** ** 实验日期: 2022/10/18 实验二堆栈和队列 实验目的: .熟悉栈这种特殊线性构造的特性; .熟练并掌握栈在顺序存储构造和链表存储构造下的根本运算; .熟悉队列这种特殊线性构造的特性; .熟练掌握队列在链表存储构造下的根本运算。 实验原理: 堆栈顺序存储构造下的根本算法; 堆栈链式存储构造下的根本算法; 队列顺序存储构造下的根本算法; 队列链式存储构造下的根本算法; 实验内容: 3-18链式堆栈设计。要求 (1)用链式堆栈设计实现堆栈, 堆栈的操作集合要求包括:初始化Stackinitiate[S),非空 否StackNotEmpty(S),入栈StackiPush(S,*),出栈StackPop〔S,d〕,取栈顶数据元素StackTop(Sd); (2)设 计一个主函数对链式堆栈发展测试。测试方法为:挨次把数据元素1, 2, 3, 4, 5 入栈,然后出栈并在屏幕上显示出栈的数据元素; (3)定义数据元素的数据类型为如下形式的构造体, Typedef struct ( chartaskName[10J; int taskNo; JDataType; 首先设计一个包含5个数据元素的测试数据,然后设计一个主函数对链式堆栈发展测试,测 试方法为:挨次吧5个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。 3-19对顺序循环队列,常规的设计方法是使用文寸尾指针和对头指针,对尾指针用于指示当 前的女寸尾位置下标,对头指针用于指示当前的女寸头位置下标。现要求: (1〕设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始 化,入队列,出队列,取对头元素和判断队列是否为空; (2)编写一个主函数发展测试。 实验结果: 3-18 typedefstructsnode DataTypedata; struct sn(xle*ne*t; } LSNode; /*初始化操作:*/ void StackInitiate(LSNode **head) /*初始化带头结点链式堆栈*/ ( iK(*head = (LSNode *)malloc(sizeofiJJSNode))) = NULL) e*it(l); (*head)-ne*t = NULL; ) /*判非空操作:*/ int StackNotEmpty(LSNode *head) /*判堆栈是否非空,非空返回1;空返回0*/ ( ifithead-ne*t = NULL) return 0; elseretuml; ) 浮入栈操作:*/ int StackPush(LSNode *head DataType *) /*把数据元素*插入链式堆栈head的栈顶作为新的栈顶*/ ( LSNode *p; if((p = (LSNode *)malloc(sizeofiOLSNode))) = NULL) ( printif内存空间缺乏无法插入! VT); retumO; ) pdata=*; p-ne*t = head-ne*t; /* 新结点链入栈顶*/ head-ne*t = p; /*新结点成为新的栈顶*/ return 1; ) /*出栈操作:*/ int StackPop(LSNode *head, DataType *d) /“出栈并把栈顶元素由参数d带回*/ ( LSNode *p 二 head-ne*t; if(p == NULL) ( printfC堆栈已空出错!) retumO; ) head-ne*t 二 p-ne*t; /* 删除原栈顶结点 */ *d = p-data; /*原栈顶结点元素赋予d*/ free(p); return 1; /*释放原栈顶结点内存空间*/ ) /*取栈顶数据元素操作:*/ int StackTop(LSNode *head, DataType *d) /*取栈顶元素并把栈顶元素由参数d带回*/ ( LSNode *p 二 head-ne*t; if(p = NULL) { prints堆栈已空出错! ”); retumO; ) *d = j?data; return 1; ) /*撤销*/ void Destroy(LSNode *head) ( LSNode *p, *pl; p 二 head; while(p != NULL) ( Pl = P; p=p-ne*t; free(pl); ) } (2)主函数程序: *includestdio.h *includestdlib.h typedefint DataType; include ”LinStack.h” void main(void) { LSNode *myStack; inti,*;

文档评论(0)

1亿VIP精品文档

相关文档