代码实现:
//链式栈
#include<iostream>
#include<assert.h>
using namespace std;
struct LinkNode {
int data;
LinkNode* link;
LinkNode(LinkNode* ptr = NULL) {
link = ptr;
}
LinkNode(const int& item, LinkNode* ptr = NULL) {
data = item;
link = ptr;
}
};
class LinkedStack {
public:
LinkedStack() :top(NULL) {
}
~LinkedStack() {
makeEmpty();
}
void Push(const int& x) {
top = new LinkNode(x, top);
assert(top != NULL);
}
void Pop(int& x) {
if (IsEmpty() == true)return;
LinkNode* ptr = top;
top = top->link;
x = ptr->data;
delete ptr;
}
bool getTop(int& x)const {
if (IsEmpty() == true)return false;
x = top->data;
return true;
}
bool IsEmpty()const {
return top == NULL ? true : false;
}
int getSize()const {
if (IsEmpty() == true)return 0;
LinkNode* ptr = top;
int k = 0;
while (ptr != NULL) {
ptr = ptr->link;
k++;
}
return k;
}
void output() {
LinkNode* ptr = top;
if (IsEmpty() == true)return;
cout << "| 栈顶 |" << endl;
while (ptr != NULL) {
cout << " ————————" << endl;
cout << "| "; printf("%10d", ptr->data); cout << " |" << endl;
ptr = ptr->link;
}
cout << " ————————" << endl;
}
void makeEmpty() {
LinkNode* ptr;
while (top!= NULL) {
ptr = top;
top = top->link;
delete ptr;
}
}
void input() {
cout << "请输入要输入元素的个数:";
int z, i;
cin >> i;
cout << endl;
for (int j = 0; j < i; j++) {
cout << "请输入第" << j + 1 << "个元素:";
cin >> z;
Push(z);
cout << endl;
}
}
private:
LinkNode* top;
};
说件丢人的事,vs报2019这个错误,可能是main打成mian了👍