您的位置:首页 > 理论基础 > 数据结构算法

数据结构|链栈的实现(实验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;

} 运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: