人人范文网 范文大全

数据结构实验2

发布时间:2020-03-03 12:45:45 来源:范文大全 收藏本文 下载本文 手机版

1.实验题目:

编写一个程序alog-1.cpp,实现顺序栈(假设栈中的元素类型为char)的各种基本运算,并在此基础上设计一个程序exp3-1.cpp,完成如下功能:

(1) 初始化栈s; (2) 判断栈s是否非空;

(3) 依次进栈元素a,b,c,d,e; (4) 判断栈s是否非空; (5) 输出栈长度;

(6) 输出从栈顶到栈底元素; (7) 输出出栈序列; (8) 判断栈s是否非空; (9) 释放栈;

2.源代码:

#include #include #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top;

//栈顶指针

} SqStack;

//定义顺序栈类型 void InitStack(SqStack *&s)//初始化栈 { s=(SqStack*)malloc(sizeof(SqStack));

s->top=-1; } void DestoryStack(SqStack *&s)//销毁栈 { free(s); } int StackLength(SqStack *&s)//求栈长度 {

int i=0;

SqStack *s1;

s1=(SqStack*)malloc(sizeof(SqStack));

s1->top=s->top;

while(s->top!=-1){

s->top--;

i++;

}

s->top=s1->top;

return i; } int StackEmpty(SqStack *s)//判断栈是否为空 {return(s->top==-1); } bool Push(SqStack *&s,ElemType e)//进栈

{if(s->top==MaxSize-1)

//栈满的情况,即栈上溢出 return false; s->top++;

//栈顶指针增1 s->data[s->top]=e;

//元素e放在栈顶指针处 return true; } int Pop(SqStack *&s,ElemType &e)//出栈 {if(s->top==-1) return false;

//栈为空的情况,即栈下溢出 e=s->data[s->top];

//取栈顶元素 s->top--; return true; } void DispStack(SqStack * &s)//打印栈

{ int i;

for(i=s->top;i>=0;i--)

printf(\"%c \",s->data[i]); printf(\"\\n\"); } void main() { ElemType e;

} SqStack *s; printf(\"(1)初始化栈s\\n\"); InitStack(s); printf(\"(2)栈为%s\\n\",(StackEmpty(s)?\"空\":\"非空\")); printf(\"(3)依次进栈元素a,b,c,d,e\\n\"); Push(s,\'a\'); Push(s,\'b\'); Push(s,\'c\'); Push(s,\'d\'); Push(s,\'e\'); printf(\"(4)栈为%s\\n\",(StackEmpty(s)?\"空\":\"非空\")); printf(\"(5)栈长度:%d\\n\",StackLength(s)); printf(\"(6)从栈顶到栈底元素:\"); DispStack(s); printf(\"(7)出栈序列:\"); while (!StackEmpty(s)) { Pop(s,e); printf(\"%c \",e); } printf(\"\\n\"); printf(\"(8)栈为%s\\n\",(StackEmpty(s)?\"空\":\"非空\")); printf(\"(9)释放栈\\n\"); DestoryStack(s); 3.程序运行结果:

4.心得体会及建议

这次实验虽然程序很长,但有了第一次的经验,而且初始化栈,销毁栈等算法课本上都有,所以借鉴了一下,在求栈长度,打印栈上花费的时间比较多,这两个算法课本上没有,编写了好多次才成功,期间跟同学也进行了很多讨论,很感谢同学帮我找出我编写的代码中的很多错误,同时也学会了几个调试程序找出错误的方法,比如设置断点,还有将不行运行的部分加注释符使其不被运行,感觉我的编程能力有了很大提高。一开始编一个程序感觉很难,但当自己把每一步都分析出来,再将它用代码表示出来后也不再感觉有多么多么难了,自己首先要进行分析,然后逐步化解。不过感觉自己指针这块儿还是很吃力,很多地方都是因为指针用错卡到那里,因此我还是要继续学习,多多实践,在看一些例子的时候多分析一下。

《数据结构》实验教学大纲

数据结构实验指导书

数据结构实验_177

数据结构实验教案

数据结构实验指导书

数据结构实验教案

《数据结构》实验指导书

《数据结构》实验指导书

数据结构实验指导书

数据结构 实验指导书

数据结构实验2
《数据结构实验2.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档