資料結構之(3)棧和佇列

2021-07-07 07:15:39 字數 2616 閱讀 6170

是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。人們把此端稱為棧頂,棧頂的第乙個元素被稱為棧頂元素,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱為進棧或入棧,它是把該元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱為出棧或退棧,它是把棧頂元素刪除掉,使其下面的相鄰元素成為新的棧頂元素。

在日常生活中,有許多類似棧的例子,如刷洗盤子時,依次把每個洗淨的盤子放到洗好的盤子上,相當於進棧;取用盤子時,從一摞盤子上乙個接乙個地向下拿,相當於出棧。又如向槍枝彈夾裡裝子彈時,子彈被乙個接乙個地壓入,則為進棧;射擊時子彈總是從頂部乙個接乙個地被射出,此為子彈出棧。

理解:1.棧的訪問時受限的,只能方位到站定的元素2.棧是一種抽象的資料結構,可以通過鍊錶陣列等實現

a.棧的實現

public

class

stackx

//入棧操作

public

void

pushtostackx(int data) else

}//出棧操作

public

intpopfromstackx()else

return topdata;

}//檢視棧操作

public

intpeepstackx()else

} //檢查棧是否為空

public

boolean

stackxisempty()

//檢查棧是否滿

public

boolean

stackxisfull()

}

b.測試棧的各項操作:

public

static

void

main(string args)

system.out.println("stackxtop=" + stackx.peepstackx());

system.out.println("stackxisempty=" + stackx.stackxisempty());

for (int i = 0; i < 10; i++)

system.out.print("stackxisempty="+stackx.stackxisempty());

}

結果顯示:

stackxtop=9

stackxisempty=false

stackxisempty=true

注意:1.棧操作中的問題,棧溢位,因此在棧的實現過程中,需要向使用者丟擲棧溢位****exception

a.應用例項:

在控制台,輸入一下字串,檢查其中分隔符是否匹配

b.編寫**:

//輸入字串

public

static

void

getstringfromconsole()else

} catch (ioexception e)

}//檢查字串是否合法

public

static boolean checkstringsparatoisill(string str)

if(strtrimed.charat(i)==codeseparator.codeseparator_3)

if(strtrimed.charat(i)==codeseparator.codeseparator_5)

if(strtrimed.charat(i)==codeseparator.codeseparator_2)

if(strtrimed.charat(i)==codeseparator.codeseparator_4)

if(strtrimed.charat(i)==codeseparator.codeseparator_6)

}result=stackx.stackxisempty();

}else

return result;

}

codeseparator

public

inte***ce codeseparator ';

}

呼叫:

public

static

void

main(string args)

測試結果:

1請輸入乙個字串:

()resultstring={}()

輸入正確

3請輸入乙個字串:

aresultstring=a

輸入正確

理解:

此例,展示了,棧在**語法檢查中的應用。可以看到的是,棧,每次,只暴漏給我們乙個元素,適當的運用棧來編寫演算法,會解決很多問題。思考下,如果,現在你不知道棧,這種資料結構工具,上面的這個檢查語法案例,直接不從下手,只能是想到了,正規表示式,根據匹配,將所有的分隔符,從字串中剔除,結果字串沒有,分隔符,則語法正確,但,仔細想來,其中還是有棧的思想在裡面;

資料結構 3 棧和佇列

棧和佇列也算是 資料型別。以為都是在首位操作,棧和佇列 克服了 線性表新增刪除需要移動大量元素的弱點。棧僅在尾部進行插入和刪除,尾部叫做棧頂,表頭叫做棧底。後進先出。last in first out lifo 空棧。插入叫入棧,刪除元素叫出棧。順序棧,的順序儲存結構是利用一組 位址連續的儲存單元,...

《資料結構》 3棧和佇列

堆疊是限定插入和刪除操作都在表的同一端進行的線性表。特點為lifo 後進先出 堆疊的順序表示.c includetypedef struct 堆疊結構體定義 void create stack s,int msize 建立乙個能容納msize個單元的空堆疊 void destroy stack s ...

資料結構之棧和佇列

棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。棧的插入操作,叫做進棧,也稱壓棧 入棧。類似子彈入彈夾。...