文章目录
栈
一种先存储的先输出的结构
属性:{1.栈头,2.栈尾,3.栈顶标志}
操作:
1.入栈 2.出栈 3.判断栈是否为空 4.获取栈顶元素
我们下面依次来实现
链表栈
#include<iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
class stack {
public:
stack();//初始化
Node* creatnewNode();//创建新节点
void setinnewNode();//向栈顶堆栈
int getfrist();//得到栈顶元素
void createstack(int nun);//创建一个栈本身
int removefrist();//出栈
void showall();//遍历栈
private:
Node* stacktop=new Node;
int size;
};
void stack::createstack(int num) {
for (int i = 0; i < num; i++) {
setinnewNode();//有多少个数字我们就加多少次
}
}
stack::stack() {
stacktop->data = 0;
stacktop->next = NULL;
size = 0;
}
Node* stack::creatnewNode() {
Node* p = new Node;//开一个新的节点
p->data = 0;
p->next = NULL;
return p;
}
void stack::setinnewNode() {
Node* newNode = stack::creatnewNode();
newNode->next = stacktop->next;
cout << "请输入新的数据。" << endl;
int num=0;
cin >> num;
newNode->data = num;
stacktop->next = newNode;
size++;
}
int stack::getfrist() {
return stacktop->next->data;
}
int stack::removefrist() {
Node* temp = stacktop->next;
stacktop->next = stacktop->next->next;
int num = temp->data;
delete temp;
size--;
return num;
}
void stack::showall() {
if (size == 0) {
cout << "栈为空。";
}
Node* curr = stacktop->next;
for (int i = 0; i < size; i++) {
cout << curr->data;
curr = curr->next;
}
}
int main() {
stack A;
A.createstack(5);
A.showall();
system("pause");
return 0;
}