郑州市网站建设_网站建设公司_门户网站_seo优化
2025/12/30 15:21:28 网站建设 项目流程

节点结构

// 结点类 
class Node
{
public:// 构造函数 Node(int val): next_(nullptr), data_(val) {}public:// 节点的下一个节点 Node* next_;// 节点的值 int data_;	
};

方法

入栈

    // 入栈 void push(int val){if(this->isFull())  {std::cout << "Stack capacity is full!" <<std::endl;return;}Node* current = new Node(val);current->next_ = this->head_;this->head_ = current;this->size_++;}

出栈

	// 出栈int pop(){if(isEmpty()){std::cout << "Stack is Empty!" << std::endl; return -1;		}Node* temp = this->head_;int val = temp->data_;this->head_ = temp->next_;delete temp;this->size_--;return val;} 

获取栈顶元素

	// 获取栈顶元素 int top() const{if(isEmpty()){std::cout << "Stack is Empty!" << std::endl; return -1;		}return this->head_->data_;}

遍历栈

	// 遍历栈 void printfStack(){if(isEmpty()) {std::cout << "Stack is Empty!" << std::endl; return;		} Node* current = this->head_;int index = 0;while(current != nullptr){std::cout << "Stack[" << index << "]" << current->data_ << std::endl;current= current->next_;++index; } }

清空栈

	// 清空栈void clear(){while(!isEmpty()) {pop();} }

获取栈大小

	// 获取栈大小 int size() const{return this->size_;}

判断栈空

	// 判断栈空 bool isEmpty() const {return this->size_ == 0;}

判断栈满

	// 判断栈满bool isFull() const {return this->size_ == this->capacity_;} 

完整代码

#pragma once#include <iostream>// 结点类 
class Node
{
public:// 构造函数 Node(int val): next_(nullptr), data_(val) {}public:// 节点的下一个节点 Node* next_;// 节点的值 int data_;	
};// 链式栈 
class LinkStack
{
public:// 默认构造LinkStack() : head_(nullptr), size_(0), capacity_(100){}// 有参构造 LinkStack(int value) : head_(nullptr), size_(0), capacity_(value){}~LinkStack(){clear();	} // 入栈 void push(int val){if(this->isFull()){std::cout << "Stack capacity is full!" <<std::endl;return;}Node* current = new Node(val);current->next_ = this->head_;this->head_ = current;this->size_++;}// 出栈int pop(){if(isEmpty()){std::cout << "Stack is Empty!" << std::endl; return -1;		}Node* temp = this->head_;int val = temp->data_;this->head_ = temp->next_;delete temp;this->size_--;return val;} // 获取栈顶元素 int top() const{if(isEmpty()){std::cout << "Stack is Empty!" << std::endl; return -1;		}return this->head_->data_;}// 遍历栈 void printfStack(){if(isEmpty()) {std::cout << "Stack is Empty!" << std::endl; return;		} Node* current = this->head_;int index = 0;while(current != nullptr){std::cout << "Stack[" << index << "]" << current->data_ << std::endl;current= current->next_;++index; } }// 清空栈void clear(){while(!isEmpty()) {pop();} }// 获取栈大小 int size() const{return this->size_;}// 判断栈空 bool isEmpty() const {return this->size_ == 0;}// 判断栈满bool isFull() const {return this->size_ == this->capacity_;} private:// 头节点 Node* head_;// 栈大小 int size_;// 栈容量int capacity_; 
};

测试代码

#include <iostream>#include "LinkStack.h" int main() 
{LinkStack *link_ = new LinkStack(5);// 测试栈大小 std::cout << "size: " << link_->size() << std::endl; // 测试为空 std::cout << "isEmpty: " << link_->isEmpty() << std::endl; // 测试插入 link_->push(1);link_->push(2);link_->push(3);link_->push(4);link_->push(5);link_->printfStack();std::cout << "isEmpty: " << link_->isEmpty() << std::endl; std::cout << "size: " << link_->size() << std::endl; // 测试栈顶 std::cout << "top: " << link_->top() << std::endl; // 测试清除 link_->clear();link_->printfStack();// 测试栈容量 std::cout << "isFull: " << link_->isFull() << std::endl;// 测试满栈 link_->push(1);link_->push(2);link_->push(3);link_->push(4);link_->push(5);link_->push(6);std::cout << "isFull: " << link_->isFull() << std::endl;return 0; 
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询