堆栈——链表实现
#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);
}
轉載于:https://www.cnblogs.com/xzxl/p/8643252.html
總結
- 上一篇: 我写了一个开源项目AlphabetPy
- 下一篇: WordPress 4.8.2 升级维护