数据结构|链栈的实现(实验3.2)
2017-10-19 22:14
896 查看
一、实验目的
1、熟练掌栈的结构特点,掌握栈的顺序存储结构和实现。2、学会使用栈解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模,建立一个链栈,实现栈的压栈和出栈操作。
源代码如下:#include<iostream>
using namespace std;
template < class T >
struct Node
{
T data;
Node<T> *next;
};
template < class T >
class LinkStack
{
public:
LinkStack(T a[], int n)
{
top = NULL;
Node<T> *node = NULL;
for (int i = 0; i < n; i++)
{
node = new Node<T>;
node->data = a[i];
node->next = top;
top = node;
}
}
~LinkStack()
{
Node<T> *deleteNode = NULL;
deleteNode = top;
top = top->next;
delete deleteNode;
}
void push(T x);
T pop();
void print();
T gettop() { if (top != NULL) return top->data; }
int Empty() { top == NULL ? return 1 : return 0; }
private:
Node <T> *top;
};
template < class T >
void LinkStack<T>::push(T x)
{
Node<T> *s;
s = new Node<T>;
s->data = x;
s->next = top;
top = s;
}
template < class T >
T LinkStack<T>::pop()
{
T x;
Node<T> *p;
if (top == NULL)throw"下溢";
x = top->data; p = top;
top = top->next;
delete p;
return x;
}
template <class T>
void LinkStack<T>::print()
{
Node<T> *node = top;
while (node->next != NULL)
{
cout << node->data << " ";
node = node->next;
}
cout << node->data << endl;
}
void main()
{
int aa[] = { 1,2,3,4 };
cout << "对元素 1、2、3、4 依次入栈 " << endl;
LinkStack<int> s(aa, 4);
cout << " 栈内所有的元素为:"<< endl;
s.print();
cout << "元素出栈为 " << s.pop() <<endl;
cout<< "出栈结果为:" << endl;
s.print();
cout << " 栈顶元素为:" << s.gettop()<< endl;
} 运行结果如下:
相关文章推荐
- 数据结构第三章实验2.实现链栈的各种基本运算
- NO.17 [excel]POI3.2、JXL2.4 解析Excel性能对比实验(含Excel读取、写入工具,JXL与POI实现均有)
- 【数据结构】之链栈的java实现
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 【数据结构】之链栈的java实现
- 简单数据结构----链栈的C++实现
- 数据结构|顺序栈的实现(实验3.1)
- 排序算法的比较和实现(南邮数据结构第四次实验)
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 使用后缀表达式写的数据结构实验,实现计算器
- 数据结构(C实现)------- 链栈
- [数据结构]c语言实现链栈的入栈,出栈,清空,销毁等操作
- 数据结构|顺序队列的实现(实验3.3)
- 数据结构--链栈基本功能实现程序代…
- 数据结构-顺序表(2)实验要求以及顺序表的表示与实现
- 实验4:栈和队列的基本操作实现及其应用——链栈
- 数据结构:实验四栈和队列的基本操作实现及其应用
- 数据结构第五版第二章实验2.实现单链表的各种基本运算
- 顺序栈和链栈的实现(实验3.1)
- (实验三)《数据结构》第三章 顺序栈与链栈的验证