#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); }