可以利用LinkedList 來寫一個(gè)棧. 例如
目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、安定網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
import java.util.* ;
public class testStack{
private LinkedList list = new LinkedList() ;
public void push(Object o ){
try{
list.addFirst( o ) ;
}catch(Exception e){
}
}
public Object pop(){
return list.removeFirst() ;
}
public Object top() {
return list.getLast() ;
}
public static void main(String[] args){
//code here
testStack s = new testStack() ;
for( int i = 0 ; i10 ;i++){
s.push( i );
}
System.out.println ( s.pop());
System.out.println(s.top());
}
}
你可以好好看看Thinking in JAVA中對(duì)集合的講解。。
堆棧是計(jì)算機(jī)為程序分配的內(nèi)存空間,用來存儲(chǔ)數(shù)據(jù)的。
內(nèi)存是計(jì)算機(jī)系統(tǒng)中一個(gè)主要部件, 用于保存進(jìn)程運(yùn)行時(shí)的程序和數(shù)據(jù),也稱可執(zhí)行存儲(chǔ)器。在計(jì)算機(jī)中,內(nèi)存空間一般是指主存儲(chǔ)器空間(物理地址空間)或系統(tǒng)為一個(gè)用戶程序分配內(nèi)存空間。擴(kuò)展內(nèi)存空間的方法一般有增加內(nèi)存大小和虛擬內(nèi)存。
源程序經(jīng)過匯編或編譯后再經(jīng)過鏈接編輯程序加工形成的程序的裝配模塊,及轉(zhuǎn)換為相對(duì)地址編址的模塊,它是以0為基址順序進(jìn)行編址的。
相對(duì)地址也稱為邏輯地址或虛擬地址,把程序中由相對(duì)地址組成的空間叫做邏輯地址空間。相對(duì)地址空間通過地址再定位機(jī)構(gòu)轉(zhuǎn)換到絕對(duì)地址空間,絕對(duì)地址空間也叫物理地址空間。
內(nèi)存空間一般是指主存儲(chǔ)器空間(物理地址空間)或系統(tǒng)為一個(gè)用戶程序分配內(nèi)存空間。系統(tǒng)為一個(gè)用戶程序分配內(nèi)存空間方法有單一連續(xù)分配、固定分區(qū)分配、動(dòng)態(tài)分區(qū)分配以及動(dòng)態(tài)重定位分區(qū)分配四種方式。
為了便于內(nèi)存分配,通常將分區(qū)按大小進(jìn)行排隊(duì),并為之建立一張分區(qū)使用表,其中各表項(xiàng)包括每個(gè)分區(qū)的起始地址、大小及狀態(tài)(是否已分配)。
當(dāng)有一用戶程序要裝入時(shí),由內(nèi)存分配程序檢索該表,從中找出一個(gè)能滿足要求的、尚未分配的分區(qū),將之分配給該程序,然后將該表項(xiàng)中的狀態(tài)置為“已分配” ;若未找到大小足夠的分區(qū),則拒絕為該用戶程序分配內(nèi)存。
參看: 1 import java.util.*; 2 3 public class TestStack { 4 public static void main(String[] args) { 5 Stack stack = new Stack(); 6 7 for(int i = 0; i 10; i++) { 8 stack.push(new Integer(i)); 9 }1011 if(!stack.empty()) {12 System.out.println(stack.pop());13 }14 }15 }
java中stack的使用方法,堆棧是一種"后進(jìn)先出"(LIFO) 的數(shù)據(jù)結(jié)構(gòu), 只能在一端進(jìn)行插入(稱為"壓棧") 或刪除 (稱為"出棧")數(shù)據(jù)的操作,下面看示例:
JAVA 中,使用 java.util.Stack 類的構(gòu)造方法創(chuàng)建對(duì)象。
public class Stack extends vector
構(gòu)造方法 : public Stack() 創(chuàng)建一個(gè)空 Stack。
方法:
1. public push (item ) 把項(xiàng) 壓入棧頂。其作用與 addElement (item ) 相同。
參數(shù) item 壓入棧頂?shù)捻?xiàng) 。 返回: item 參數(shù) ;
2. public pop () 移除棧頂對(duì)象,并作為函數(shù)的值 返回該對(duì)象。
返回:棧頂對(duì)象(Vector 對(duì)象的中的最后一項(xiàng))。
拋出異常 : EmptyStackException 如果堆棧式空的 。。。
3. public peek() 查看棧頂對(duì)象而不移除它。。
返回:棧頂對(duì)象(Vector 對(duì)象的中的最后一項(xiàng))。
拋出異常 : EmptyStackException 如果堆棧式空的 。。。
4. public boolean empty (測試堆棧是否為空。) 當(dāng)且僅當(dāng)堆棧中不含任何項(xiàng)時(shí) 返回 true,否則 返回 false.
5. public int search (object o) 返回對(duì)象在堆棧中位置, 以 1 為基數(shù), 如果對(duì)象 o是棧中的一項(xiàng),該方法返回距離 棧頂最近的出現(xiàn)位置到棧頂?shù)木嚯x; 棧中最上端項(xiàng)的距離為 1 。
//這是JDK提供的棧
import java.util.Stack;
public class UsingStack {
public static void main(String[] args) {
//構(gòu)造棧對(duì)象,使用類型限制,只能存儲(chǔ)Integer數(shù)據(jù)
StackInteger s = new StackInteger();
//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
//這是我寫的順序結(jié)構(gòu)的棧
import java.util.EmptyStackException;
import java.util.Vector;
public class UsingStack{
public static void main(String[] args){
//構(gòu)造棧對(duì)象,使用類型限制,只能存儲(chǔ)Integer數(shù)據(jù)
MyStackInteger s = new MyStackInteger();
//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
/**
* 棧類
* @author developer_05
* @param T
*/
class MyStackT extends VectorT{
/**
* 構(gòu)造方法
*/
public MyStack(){
}
/**
* 入棧方法
* @param item 待入棧的元素
* @return 返回入棧的元素
*/
public T push(T item) {
addElement(item);
return item;
}
/**
* 出棧方法(同步處理)
* @return 返回出棧元素
*/
public synchronized T pop() {
T obj;
int len = size();
if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);
removeElementAt(len - 1);
return obj;
}
/**
* 判斷棧是否為空的方法
* @return 返回true(棧空)或false(棧非空)
*/
public boolean empty() {
return size() == 0;
}
private static final long serialVersionUID = 1L;
}
使用java.util包中的Stack類創(chuàng)建一個(gè)棧對(duì)象
public Object push(Object data);輸入數(shù)據(jù),實(shí)現(xiàn)壓棧
public Object pop();輸出數(shù)據(jù),實(shí)現(xiàn)彈棧
public boolean empty()判空
public Object peek();查看棧頂元素
可以去查查API嘛
我也是學(xué)java的,大家一起進(jìn)步。