求助,请问该如何用函数实现入栈和出栈?

已知链栈Q,编写函数判断栈空,如果栈空则进行入栈操作,否则出栈并输出。(要求判断栈空、出栈、入栈用函数实现)

海绵宝宝撒
浏览 249回答 1
1回答

慕村9548890

#ifndef Node_#define Node_template <class T> class LinkedStack;template <class T> class LinkedQueue;template <class T>class Node {friend LinkedStack<T>;friend LinkedQueue<T>;private:T data;Node<T> *link;};#endif// file lstack.h// linked stack#include "node.h"#include "xcept.h"template<class T>class LinkedStack {public:LinkedStack() {top = 0;}~LinkedStack();bool IsEmpty() const {return top == 0;}bool IsFull() const;T Top() const;LinkedStack<T>& Add(const T& x);LinkedStack<T>& Delete(T& x);private:Node<T> *top; // pointer to top node};template<class T>LinkedStack<T>::~LinkedStack(){// Stack destructor..Node<T> *next;while (top) {next = top->link;delete top;top = next;}}template<class T>bool LinkedStack<T>::IsFull() const{// Is the stack full?try {Node<T> *p = new Node<T>;delete p;return false;}catch (NoMem) {return true;}}template<class T>T LinkedStack<T>::Top() const{// Return top element.if (IsEmpty()) throw OutOfBounds();return top->data;}template<class T>LinkedStack<T>& LinkedStack<T>::Add(const T& x){// Add x to stack.Node<T> *p = new Node<T>;p->data = x;p->link = top;top = p;return *this;}template<class T>LinkedStack<T>& LinkedStack<T>::Delete(T& x){// Delete top element and put it in x.if (IsEmpty()) throw OutOfBounds();x = top->data;Node<T> *p = top;top = top->link;delete p;return *this;}
打开App,查看更多内容
随时随地看视频慕课网APP