#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
using ElemType = int;
// 堆栈结构
class Node {
public:
ElemType data;
Node *next;
};
// 初始化栈
Node* initStack(Node *head, int n)
{
srand(time(NULL));
head->data=rand()%100 - 1; // 栈底元素
while (n--) {
Node *q = (Node*)malloc(sizeof(Node));
q->data = rand()%100 - 1;
q->next = head;
head = q;
}
return head;
}
// 压栈
Node* push(Node *head, ElemType val)
{
Node *q = (Node*)malloc(sizeof(Node));
q->data = val;
q->next = head;
head = q;
return head;
}
// 出栈
Node* pop(Node *head)
{
Node *p = head;
if (head->next == NULL) {
free(p);
return head;
}
head = head->next;
free(p);
return head;
}
void print(Node *head)
{
Node *p = head;
cout << "从栈顶到栈底的元素依次为:";
while(p->next != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main()
{
Node *head = (Node*)malloc(sizeof(Node)); // 头指针指向栈顶
head->next = NULL;
head = initStack(head, 10);
print(head);
head = push(head, 20);
print(head);
head = pop(head);
print(head);
}