实验四:顺序栈和链栈
2017-10-16 17:46
357 查看
一、实验目的
熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
二、实验过程
1.顺序栈#ifndef SeqStack_H #define SeqStack_H const int StackSize=10; template class SeqStack { public: SeqStack(); ~SeqStack(){} void Push(DataType x); //x入栈 DataType Pop(); //将栈顶元素弹出 DataType GetTop(); //取栈顶元素 int Empty(); //判断栈是否为空 private: DataType data[StackSize]; //存放栈元素的数组 int top; //栈顶指针,指示栈顶元素在数组中的下标 }; #endif #include"SeqStack.h" template SeqStack::SeqStack() { top=-1; } template void SeqStack::Push(DataType x) { if(top==StackSize-1)throw"上溢"; top++; data[top]=x; } template DataType SeqStack::Pop() { DataType x; if(top==-1)throw"下溢"; x=data[top--]; return x; } template DataType SeqStack::GetTop() { if(top!=-1) return data[top]; } template int SeqStack::Empty() { if(top==-1)return 1; else return 0; } #include using namespace std; //引入输入输出流 #include"SeqStack.cpp" //引入类SeqStack的成员函数定义 void main() //主函数 { SeqStackS; //创建模板类的实例 if(S.Empty()) cout<<"栈为空"<
2.链栈
#ifndef LinkStack_H #define LinkStack_H template struct Node { DataType data; Node * next; }; template class LinkStack { public: LinkStack(); ~LinkStack(); void Push(DataType x); DataType Pop(); DataType GetTop(); int Empty(); private: Node*top; }; #endif; #include"LinkStack.h" template LinkStack::LinkStack() { top=NULL; } template LinkStack::~LinkStack() { Node*q=NULL; while(top!=NULL) { q=top; delete q; } } template void LinkStack::Push(DataType x) { Node *s=NULL; s=new Node;s->data=x; s->next=top;top=s; } template DataType LinkStack::Pop() { Node *p=NULL; if(top==NULL)throw"下溢"; int x; x=top->data;p=top; top=top->next; delete p; return x; } template DataType LinkStack::GetTop() { if(top!=NULL) return top->data; } template int LinkStack::Empty() { if(top==NULL)return 1; else return 0; } #include using namespace std; #include"1.cpp" void main() { LinkStackS; if(S.Empty()) cout<<"Link is Enpty"<
三、实验心得
按照书上的部分算法提示,和实验书的源程序,可以写出栈链的程序,书本的理论知识很详细,通过实验可以将他实现。通过实验,可以更对顺序栈和链栈之间的区别更加清晰。相关文章推荐
- 实验三 顺序栈和链栈
- 实验四 顺序栈、链栈(JavaScript)
- 数据结构实验之链表一:顺序建立链表
- SDUT 2116数据结构实验之链表一:顺序建立链表
- 数据结构实验之查找六:顺序查找
- 数据结构实验之查找六:顺序查找
- 《数据结构》第三章 栈和队列 实验(顺序栈)
- 数据结构|创建学生成绩的顺序表(实验2.1)
- 顺序栈、链栈基本操作
- OJ期末刷题 C语言实验——转换字母(顺序结构)
- 实验三(1) 顺序栈的验证实验
- 实验三、链栈
- C语言实验——计算A+B(顺序结构)
- 数据结构实验之查找六:顺序查找
- 实验1-顺序结构 —— C语言实验——单个字符输入和输出(1113) ★
- 实验三、链队列和顺序队列
- 3378 数据结构实验之查找六:顺序查找
- 实验四 顺序队列和链队列
- 数据结构上机实验之顺序查找
- 实验二、2顺序表的就地逆置