相信很多人刚开始学习编程语言时,会经常听到栈、队列之类的名词,却不知道这是什么,我也是。但这不是本文的重点,重点是简单的栈和队列的实现。
看过很多网上将这些的文章,代码却非常复杂,不利于初学者去理解这是干什么的,因此我以一个初学者的角度去实现最简单的栈和队列,应该会容易理解。
栈和队列的实现是依赖编程语言特性本身的,比如用C++的话,就可以用结构体或者类来实现。不是本身就存在的奇奇怪怪的东西。(这是我初学时的困惑)
直接上代码:(假设看文章的人知道基本原理)
栈:
<span style="font-size:10px;">//这是充满坑的代码,很多因素没有考虑到,仅用于初学者理解
class Stack{
private:
int len;
int *arr;
public:
Stack() {
len = 0;
arr = new int[1000];
}
//插入
void push(int num) {
arr[len++] = num;
}
//弹出
void pop() {
len--;
}
//显示顶部的元素
int top() {
return arr[len - 1];
}
//判断栈是否为空
bool empty() {
return len == 0;
}
//清空栈
void empty() {
len = 0;
}
};</span>
//这是充满坑的代码,很多因素没有考虑到,仅用于初学者理解
//比如,删除其实仅仅对head和tail操作,数据还在。
private:
int *arr;
int head, tail;
public:
Quene() {
head = tail = 0;
arr = new int[1000];
}
void enQuene(int num) {
arr[tail++] = num;
}
void deQuene() {
head++;
}
int front() {
return arr[head];
}
bool empty() {
return head - tail == 0;
}
void clear() {
head = tail = 0;
}
};