栈的特点:先进后出
#include<bits/stdc++.h>
using namespace std;
//栈的定义
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct stack {
//表示一个链表,但始终让其指向头部
Node *top;
int count;
}MyStack;
//入栈
MyStack* push(MyStack* myStack, int num){
if(myStack == NULL){
return NULL;
}
Node* temp = (Node*) malloc(sizeof (Node));
temp->data = num;
//将新结点的next指向原来的头指针所指的头部结点,再让头指针指向新结点
temp->next = myStack->top;
myStack->top = temp;
myStack->count++;
return myStack;
}
//出栈
MyStack* pop(MyStack* myStack) {
if(myStack == NULL) {
return NULL;
}
Node* temp = myStack->top;
myStack->top = myStack->top->next;
delete(temp);
return myStack;
}
//获取栈顶元素
int getTop(MyStack* myStack) {
if(myStack == NULL) {
return NULL;
}
return myStack->top->data;
}
int main() {
MyStack* myStack;
myStack->top = NULL;
myStack->count = 0;
cout << "请输入您想入栈的数据个数:";
int n, num;
cin >> n;
cout << "请输入数据:";
for(int i=0; i<n; i++) {
cin >> num;
push(myStack, num);
}
cout << getTop(myStack) << endl;
pop(myStack);
cout << getTop(myStack) << endl;
pop(myStack);
cout << getTop(myStack) << endl;
return 0;
}