QueueEnginer.prototype.end?=?function(func){
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供武進(jìn)網(wǎng)站建設(shè)、武進(jìn)做網(wǎng)站、武進(jìn)網(wǎng)站設(shè)計(jì)、武進(jìn)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、武進(jìn)企業(yè)網(wǎng)站模板建站服務(wù),十多年武進(jìn)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
if(func)this.endFunc?=?func;
else?if(this.endFunc)this.endFunc();
}
先加個(gè)end
然后在process里的那個(gè)return 變?yōu)閞eturn this.end();
2.因?yàn)槟愕膯栴}形容的比較模糊,所以補(bǔ)充信息給出你的答案。首先定義隊(duì)列一定要說是單向循環(huán)隊(duì)列,還是雙向循環(huán)隊(duì)列,你這里沒有指出就默認(rèn)是單向循環(huán)。2.1何時(shí)隊(duì)列滿。當(dāng)新的結(jié)點(diǎn)進(jìn)入隊(duì)列的時(shí)候,那么當(dāng)前的length+1當(dāng)你的length=MAXlength;是代表該隊(duì)列是滿。2.2入隊(duì)列,根據(jù)隊(duì)列的定義如果入隊(duì)列只能在尾巴處加入。新節(jié)點(diǎn)是node;node-next=rear-next;rear-next=node;2.3出隊(duì)列,根據(jù)隊(duì)列的定義如果出隊(duì)列只能在頭結(jié)點(diǎn)出。temp=rear-next;rear-next=rear-next-next;free(temp);3.首先假設(shè)兩個(gè)棧是等長(zhǎng)的,那么隊(duì)列慢的判斷條件的是兩個(gè)棧中的結(jié)點(diǎn)和,等于一個(gè)棧的容量的時(shí)候,就代表隊(duì)列滿了!當(dāng)兩個(gè)棧不等長(zhǎng)的時(shí)候,兩個(gè)棧中的結(jié)點(diǎn)和等于較小的棧的長(zhǎng)度隊(duì)列就滿了。以較小的棧作為隊(duì)列存放棧,長(zhǎng)的棧作為輔助棧。3.1出隊(duì)列從棧頂去除結(jié)點(diǎn)即可。3.2入隊(duì)列,將短棧內(nèi)的元素,一次入長(zhǎng)棧,然后將新元素,壓入短棧,再將長(zhǎng)棧中的元素一次入短棧。即完成了入棧。
function?queue(arr,item){
arr.push(item);
return?arr.splice(0,1);
}
//測(cè)試
var?a=[1,4,2,6];
console.log(queue(a,5));??//1
console.log(a);???//4,2,6,5
1.隊(duì)列先進(jìn)先出,棧先進(jìn)后出。
2. 對(duì)插入和刪除操作的"限定"。 棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表。 隊(duì)列是限定只能在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。 從"數(shù)據(jù)結(jié)構(gòu)"的角度看,它們都是線性結(jié)構(gòu),即數(shù)據(jù)元素之間的關(guān)系相同。但它們是完全不同的數(shù)據(jù)類型。除了它們各自的基本操作集不同外,主要區(qū)別是對(duì)插入和刪除操作的"限定"。 棧和隊(duì)列是在程序設(shè)計(jì)中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),它們的特點(diǎn)在于基本操作的特殊性,棧必須按"后進(jìn)先出"的規(guī)則進(jìn)行操作,而隊(duì)列必須按"先進(jìn)先出" 的規(guī)則進(jìn)行操作。和線性表相比,它們的插入和刪除操作受更多的約束和限定,故又稱為限定性的線性表結(jié)構(gòu)。
3.遍歷數(shù)據(jù)速度不同。棧只能從頭部取數(shù)據(jù) 也就最先放入的需要遍歷整個(gè)棧最后才能取出來,而且在遍歷數(shù)據(jù)的時(shí)候還得為數(shù)據(jù)開辟臨時(shí)空間,保持?jǐn)?shù)據(jù)在遍歷前的一致性隊(duì)列怎不同,他基于地址指針進(jìn)行遍歷,而且可以從頭或尾部開始遍歷,但不能同時(shí)遍歷,無需開辟臨時(shí)空間,因?yàn)樵诒闅v的過程中不影像數(shù)據(jù)結(jié)構(gòu),速度要快的多
棧(Stack)是限定只能在表的一端進(jìn)行插入和刪除操作的線性表。
隊(duì)列(Queue)是限定只能在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。
從"數(shù)據(jù)結(jié)構(gòu)"的角度看,它們都是線性結(jié)構(gòu),即數(shù)據(jù)元素之間的關(guān)系相同。但它們是完全不同的數(shù)據(jù)類型。除了它們各自的基本操作集不同外,主要區(qū)別是對(duì)插入和刪除操作的"限定"。
棧和隊(duì)列是在程序設(shè)計(jì)中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),它們的特點(diǎn)在于基本操作的特殊性,棧必須按"后進(jìn)先出"的規(guī)則進(jìn)行操作,而隊(duì)列必須按"先進(jìn)先出"的規(guī)則進(jìn)行操作。和線性表相比,它們的插入和刪除操作受更多的約束和限定,故又稱為限定性的線性表結(jié)構(gòu)??蓪⒕€性表和棧及隊(duì)列的插入和刪除操作對(duì)比如下:
線性表
Insert(L,i,x)
(1≤i≤n+1)
Delete(L,i)
(1≤i≤n)
如線性表允許在表內(nèi)任一位置進(jìn)行插入和刪除
棧
Insert(L,n+1,x)
Delete(L,n)
而棧只允許在表尾一端進(jìn)行插入和刪除
隊(duì)列
Insert(L,n+1,x)
Delete(L,1)
隊(duì)列只允許在表尾一端進(jìn)行插入,在表頭一端進(jìn)行刪除
1.1. 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。
1.2. Java實(shí)現(xiàn)
QueueTest
package ch04;
public class QueueTest {
public static void main(String[] args) {
ArrayQueue queue = new ArrayQueue(10);
System.out.println(queue.isEmpty());
for (int i = 0; i 10; i++) {
queue.insert(i);
}
System.out.println(queue.isFull());
while (!queue.isEmpty()) {
System.out.println(queue.remove());
}
}
}
class ArrayQueue {
private int[] arrInt;// 內(nèi)置數(shù)組
private int front;// 頭指針
private int rear;// 尾指針
public ArrayQueue(int size) {
this.arrInt = new int[size];
front = 0;
rear = -1;
}
/**
* 判斷隊(duì)列是否為空
*
* @return
*/
public boolean isEmpty() {
return front == arrInt.length;
}
/**
* 判斷隊(duì)列是否已滿
*
* @return
*/
public boolean isFull() {
return arrInt.length - 1 == rear;
}
/**
* 向隊(duì)列的隊(duì)尾插入一個(gè)元素
*/
public void insert(int item) {
if (isFull()) {
throw new RuntimeException("隊(duì)列已滿");
}
arrInt[++rear] = item;
}
/**
* 獲得對(duì)頭元素
*
* @return
*/
public int peekFront() {
return arrInt[front];
}
/**
* 獲得隊(duì)尾元素
*
* @return
*/
public int peekRear() {
return arrInt[rear];
}
/**
* 從隊(duì)列的對(duì)頭移除一個(gè)元素
*
* @return
*/
public int remove() {
if (isEmpty()) {
throw new RuntimeException("隊(duì)列為空");
}
return arrInt[front++];
}
}
運(yùn)行結(jié)果如下:
false
true
1
2
3
4
5
6
7
8
9
通俗來說就是Javascript就是一個(gè)人在做所有事情,所以同時(shí)只能做一個(gè)事情,而大部滬處高肺薨鍍胳僧供吉分客戶端應(yīng)用是可以使用多個(gè)線程的,比如QQ,同時(shí)可以幫你處理很多事情:發(fā)送消息,接受消息什么的