ListStack

#ifndef _LISTSTACK_H
#define _LISTSTACK_H
#include "DBLink.h"

template<typename Type>
class ListStack
{
public:
	ListStack()
	{

	}

	ListStack(const ListStack& stack)
	{
		m_link = stack.m_link;
	}

	void Push(const Type &tData)
	{
		m_link.push_back(tData);
	}

	int Size()
	{
		return m_link.Size();
	}

	Type Top()
	{
		Type temp = m_link.Back();
		m_link.pop_back();
		return temp;
	}
private:
	DBLink<Type> m_link;
};

#endif

编写`liststack.cpp`程序,首先需要创建一个链式栈的数据结构,包含节点类、栈类以及相应的操作函数,如入栈(push)、出栈(pop)、查看顶部元素(top)和判断是否为空(empty)。这里以C++为例,给出简单的实现: ```cpp // listnode.h #ifndef LISTNODE_H #define LISTNODE_H #include <iostream> template <typename T> class ListNode { public: T data; ListNode* next; ListNode(T d) : data(d), next(nullptr) {} }; #endif // LISTNODE_H // liststack.h #ifndef LISTSTACK_H #define LISTSTACK_H #include "listnode.h" template <typename T> class ListStack { private: ListNode<T>* top; public: ListStack() : top(nullptr) {} ~ListStack(); bool empty() const; void push(const T& item); T pop(); T top() const; }; template <typename T> bool ListStack<T>::empty() const { return top == nullptr; } template <typename T> void ListStack<T>::push(const T& item) { ListNode<T>* newNode = new ListNode<T>(item); newNode->next = top; top = newNode; } template <typename T> T ListStack<T>::pop() { if (empty()) { throw std::runtime_error("Stack is empty"); } T item = top->data; ListNode<T>* temp = top; top = top->next; delete temp; return item; } template <typename T> T ListStack<T>::top() const { if (empty()) { throw std::runtime_error("Stack is empty"); } return top->data; } #endif // LISTSTACK_H ``` 接下来,`exp1-1.cpp`可以这样使用上述`ListStack`类来完成所需功能: ```cpp #include "liststack.h" #include <iostream> int main() { ListStack<char> s; // 初始化栈s for (char c = 'A'; c <= 'Z'; ++c) { s.push(c); } // 判断栈s是否为空 if (s.empty()) { std::cout << "Stack s is empty.\n"; } else { std::cout << "Stack s is not empty.\n"; } // 查看栈顶元素 try { char topChar = s.top(); std::cout << "Top element in stack s is: " << topChar << '\n'; } catch (const std::runtime_error& e) { std::cerr << "Error: " << e.what() << '\n'; } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值