基本数据结构——栈、队列和链表

来源:互联网 发布:java开源网 编辑:程序博客网 时间:2024/06/05 14:25

栈(stack)实现的是一种依照先进先出(last—in,first-out,LIFO)原则的结构,也就是说最后放入的元素总是最先被取出。

队列(queue)实现的是一种依照先进先出(first-in,first-out,FIFO)原则的结构,也就是说最先放入的元素总是最先被取出。

至于为什么会存在这两种如此简单的结构,是因为我们在日常生活中经常采用上面的两个原则来处理一些数据。

栈上的插入(Insert)经常被称做压入或入栈(PUSH);删除元素操作(Delete)经常被称作弹出(POP),另外检查栈是否为空的函数是(StackIsEmpty)。

以下代码是基于数组的栈实现,以及简单的测试入栈操作。

至于队列的Enqueue于Dequeue操作类似建议大家自己动手敲一下吧。

链表见下节博文。

#include<iostream>bool StackIsEmpty(int* s,int top) {if (top == -1)return true;else return false;}void Push(int* s, int top, int x) {top = top + 1;s[top] = x;}int Pop(int* s,int top) {if (StackIsEmpty) {std::cout << "underflow" << std::endl;return 0;}else{top = top - 1;return s[top + 1];}}int main() {int s[5]{ 1,2,3,4 };int top = 3;for (auto x : s) {std::cout << x << "";}std::cout << std::endl;Push(s, 3, 5);for(auto x:s){std::cout << x << "";}std::cout << std::endl;}