数据结构|链栈的实现(实验3.2)

来源:互联网 发布:spark sql 官网 编辑:程序博客网 时间:2024/05/21 09:36

一、实验目的

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;      }  
运行结果如下:


阅读全文
0 0
原创粉丝点击