栈和队列
介绍栈和队列的定义以及 Golang 实现。
概念性的东西
栈的定义
栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。
栈顶(Top):线性表允许进行插入删除的那一端。
栈底(Bottom):固定的,不允许进行插入和删除的另一端。
空栈:不含任何元素的空表。
队的定义
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。
队头(Front):允许删除的一端,又称队首。
队尾(Rear):允许插入的一端。
空队列:不包含任何元素的空表。
栈(Go)
数组栈的存储结构
1 | type ArrayStack struct { |
出栈
1 | // Pop 出栈 |
入栈
1 | // Push 压栈 |
判断栈为空
1 | func (s *ArrayStack) IsStackNil() bool { |
获取头元素
1 | func (s *ArrayStack) GetTop() interface{} { |
懒狗
链表栈差不多
队列和栈也差不多。。。就是先进先出罢了