棧與佇列都是比較基礎的資料結構
棧的特點是先進後出,他的底層是由陣列實現的
我們來做乙個簡單的棧的封裝
class mystack
//放入的方法
public void push(int val) throws exception
data[top] = val;
top++;
}//取出的方法
public int pop() throws exception
top--;
return data[top];
}//判斷是否為空的方法
public boolean isempty()
}
佇列的特點是先進先出,他的底層是由鍊錶實現
我們來封裝乙個簡單的佇列
class myqueue
public void push(int val)else
size++;
}public int pop() throws exception
int result = head.val;
head = head.next;
size--;
return result;
}}
如何用棧來實現佇列呢?
用乙個棧不是不能實現佇列的,所有我們用兩個棧,乙個棧用來存放資料,另乙個棧用來做容器。
在第乙個棧中先後放入c,b,a三個物件,佇列的特點是先進先出,所以為了獲取c,我們要先將a放入第二個棧中,再將b放入第二個棧中,再將c放入第二個棧,取出c後,把b和a還原回棧1。佇列push的時候是加在棧1,pop的時候是棧2出棧。
以下是**實現
用上面簡單封裝的棧來實現
class myquenewithstack
public void push(int val) throws exception
public int pop() throws exception
int result = mystack2.pop();
while (!mystack1.isempty())
return result;
}}
棧與佇列 獲取棧頂 隊首資料(並出棧 隊)
陣列棧 完成elemtype top stack s 函式,該函式把返回棧頂資料 不出棧 已知棧非空。完成elemtype topandpop stack s 函式,該函式返回棧頂資料的同時把棧頂資料出棧,已知棧非空。typedef int elemtype struct stackrecord t...
兩棧來實現佇列功能
用兩棧來實現佇列功能 首先棧的 檔名 stack list.h include include stack list.h node creat node type data 建立乙個節點 建立 stack creat stack void 銷毀 void destory stack stack st...
棧和佇列 簡單實現
棧 是一種特殊的線性表,只允許在固定的一端插入和刪除,一端稱為棧底,一端稱為棧頂。棧遵循先進後出的原則。棧的相關操作 壓棧,向棧頂插入乙個元素 出棧,在棧頂處刪除乙個元素 取棧頂元素,獲取到在最後乙個在棧頂元素的結果。棧的實現 1.基於順序表 使用尾插,尾刪來分別表示入棧和出棧。根據下標獲取元素表示...