在vc2010学习版编写“链栈头文件.h”,其中包含:建立链式栈、元素入栈、出栈、判栈空、求栈长度、取栈顶元素和遍历栈等基本操作。
时间: 2024-09-20 09:15:35 浏览: 54
C语言头文件 WINUSER.H
5星 · 资源好评率100%
在Visual C++ 2010学习版中,创建一个名为"链栈.h"的头文件,用于定义链式栈的数据结构和相关的函数,可以按照以下步骤:
```cpp
// 链栈.h
#ifndef _CHAINSTACK_H_
#define _CHAINSTACK_H_
#include <iostream>
template <typename T>
class Node {
public:
T data;
Node<T>* next;
Node(T val) : data(val), next(nullptr) {}
};
template <typename T>
class Stack {
private:
Node<T> *top; // 栈顶指针
int length; // 栈的长度
public:
// 初始化栈
Stack() : top(nullptr), length(0) {}
// 判断栈是否为空
bool isEmpty() const { return top == nullptr; }
// 返回栈的长度
int getLength() const { return length; }
// 元素入栈
void push(const T& value) {
Node<T>* newNode = new Node<T>(value);
if (isEmpty()) {
top = newNode;
} else {
newNode->next = top;
top = newNode;
}
length++;
}
// 出栈并返回顶部元素
T pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty.");
}
T result = top->data;
Node<T>* temp = top;
top = top->next;
delete temp;
length--;
return result;
}
// 取栈顶元素但不删除
T peek() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty.");
}
return top->data;
}
// 遍历栈
void traverse() const {
if (!isEmpty()) {
Node<T>* node = top;
while (node != nullptr) {
std::cout << node->data << " ";
node = node->next;
}
std::cout << std::endl;
} else {
std::cout << "Stack is empty." << std::endl;
}
}
};
#endif // _CHAINSTACK_H_
```
阅读全文