这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
1. 栈简介
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。 而且它是一种先进后出的存储方式,也就是说最后添加的项最先被移出;它是一种运算受限的线性表,只能在表头/栈顶进行插入和删除操作。
2. 栈的属性和方法
对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用 push() 方法,出栈使用 pop() 方法。 peek() 方法则只返回栈顶元素,而不删除它。clear() 方法清除栈内所有元素,length 属性记录栈内元素的个数。empty 属性,用以表示栈内是否含有元素,不过使用 length 属性也可以。变量 top 记录栈顶位置。
3. 栈的实现
- 栈的构造
function Stack() {
this.data = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
}
- push()向栈中压入一个新元素,top增加1
function push(element) {
this.data[this.top++] = element;
}
- pop()返回栈顶元素,top减少1
function pop() {
return this.data[--this.top];
}
- peek()返回栈顶
function peek() {
return this.data[this.top-1];
}
- length返回栈的元素个数
function length() {
return this.top;
}
- clear清空栈
function length() {
return this.top;
}
4. 队列简介
队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,只允许一端进行插入操作,另一端进行删除操作。队列被用在很多地方。比如提交操作系统执行的一系列进程、打印任务池等。
5. 队列的操作方法和属性
- push() 方法可以在数组末尾加入元素
- shift() 方法则可删除数组的第一个元素
- enqueue() 方法向队尾添加一个元素
this.enqueue = function enqueue(element) {
this.data.push(element);
} ;
- dequeue() 方法删除队首的元素
this.dequeue = function dequeue() {
return this.data.shift();
};
- toString() 方法显示队列内的所有元素
this.toString = function toString() {
var retStr = "";
for (var i = 0; i < this.data.length; ++i) {
retStr += this.data[i] + "\n";
}
return retStr;
};
- empty()方法判断队列是否为空
this.empty = function empty() {
if (this.data.length == 0) {
return true;
} else {
return false;
}
};
6. 队列的实现
function Queue() {
this.data = [];
this.front = function front() {
return this.data[0];
};
this.back = function back() {
return this.data[this.data.length - 1];
};
// 还有以上方法
}