实验报告_实验二_..docVIP

  • 22
  • 0
  • 约8.99千字
  • 约 16页
  • 2017-01-12 发布于重庆
  • 举报
实验报告_实验二_.

数据结构与算法实现实验报告 实验一 1.实验题目   顺序栈的定义及其操作算法的实现 2.需求分析 本演示程序用C++编写,编程实现顺序栈表的类型定义及顺序表的初始化操作、入栈操作、出栈操作、取栈顶元素操作、输出操作等,并对其进行验证。 输出的形式:输出栈中的每一个元素。 程序所能达到的功能:实现顺序栈表的类型定义及顺序表的初始化操作、入栈操作、出栈操作、取栈顶元素操作、输出操作。 测试数据:     往顺序栈中插入7,14,21,28,35,42 3.概要设计   1)为了实现上述程序功能,需要定义栈的抽象数据类型:   ADT Stack {    数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}    数据关系:R={ai-1,ai|ai,ai-1∈D,i=2,…,n}    基本操作:   InitStack(SqStack S)   操作结果:构造一个空栈S.   GetTop(SqStack S, ElemType e)   初始条件:顺序栈S已存在   操作结果:得到顺序栈的头元素   Push(SqStack S, ElemType e)   初始条件:顺序栈S已存在   操作结果:往顺序栈S中插入元素e为新的栈顶元素   Pop(SqStack S,ElemType e)   初始条件:顺序栈S已存在   操作结果:从顺序栈S删除栈顶元素.   StackOutput(SqStack S)   初始条件:顺序栈S已存在   操作结果:读取顺序栈中的各个元素   main()   操作结果:调用各个函数 4.详细设计   1) 结点类型和指针类型 typedef struct {ElemType *Elem; int Top; int StackSize; }SqStack; 2) 顺序栈的基本操作 void InitStack(SqStack S) //构造一个空栈S { S.Elem=(ElemType *)malloc(Init_Size*sizeof(ElemType)); if(!S.Elem) coutOVERFLOW; //存储分配失败 S.Top=0; } //InitStack void GetTop(SqStack S, ElemType e) //若栈不空,则用e返回S的栈顶元素,否则返回ERROR {if (S.Top==0) coutERROR; e=S.Elem[S.Top-1]; } //GetTop void Push(SqStack S, ElemType e) //插入元素e为新的栈顶元素 { if(S.Top==S.StackSize) //栈满,追加存储空间 { S.Elem=(ElemType*)malloc((S.StackSize+INCR)*sizeof(ElemType)); if(!S.Elem) coutOVERFLOW; //存储空间分配失败 S.StackSize+=INCR; } S.Elem[S.Top++]=e; } //Push void Pop(SqStack S,ElemType e) //若栈不空,则删除S的栈顶元素,用e返回其值,否则返回ERROR {if (!S.Top) {cout栈为空endl;coutERROR;} e=S.Elem[--S.Top]; } //Pop void StackOutput(SqStack S) //输出栈中的元素 { int i; for(i=0;iS.Top;i++) coutS.Elem[i] ; coutendl; } //StackOutput 3) 其他模块 int main() //主函数 { SqStack S; ElemType e; InitStack(S); cout====================================endl; cout顺序栈实验endl; cout====================================endl; Push(S,7);Push(S,14);Push(S,21);Push(S,28); cout栈中元素分别为:endl; StackOutput(S);

文档评论(0)

1亿VIP精品文档

相关文档