資料結構 棧的實現(順序棧和鏈棧)

2021-10-02 05:40:38 字數 3311 閱讀 6310

* * 棧介面,描述棧的抽象資料型別,泛型引數t表示資料元素的資料型別

*/public

inte***ce

sstack

棧有兩種基本的實現:

* * 順序棧,實現棧介面

*/public

class

seqstack

implements

sstack

//預設構造,構造容量為64的空棧

public

seqstack()

//判斷棧是否為空,若為空返回true

@override

public

boolean

isempty()

//元素x入棧,空物件不操作

@override

public

void

push

(t x)

this

.top++

;//移動棧頂指標

this

.element[

this

.top]

= x;

//入棧

}//出棧,返回棧頂元素,若棧空返回null

@override

public t pop()

//取出棧頂元素,未出棧,若棧空返回null

@override

public t get()

//返回棧所有元素的描述字串,形式為「(,)」,演算法同順序表

節點類:

public

class

node

public

node

(t data, node

next)

public string tostring()

public

boolean

equals

(object obj)

}

鏈棧的實現:

package pers.zhang.stack;

import pers.zhang.linearlist.linearlist;

import pers.zhang.linearlist.node;

/** * @author zhang

* @date 2020/1/16 - 14:28

* * 鏈棧,實現棧介面

*/public

class

linkedstack

implements

sstack

//判斷棧是否為空,若空返回true

@override

public

boolean

isempty()

//元素x入棧,空物件不操作

@override

public

void

push

(t x)

//出棧,返回棧頂元素,棧空返回null

@override

public t pop()

//取出棧頂元素,未出棧,空棧返回null

@override

public t get()

//返回棧所有元素的描述字串,形式為「(,)」。演算法同不帶頭結點的單鏈表

public string tostring()

return str +

")";

//空表返回()

}}

package pers.zhang.stack;

/** * @author zhang

* @date 2020/1/16 - 14:36

*/public

class

stack_ex

*/ linkedstack

stack =

newlinkedstack

(); system.out.

print

("push: ");

for(

int i=

1; i<=

5; i++

) system.out.

println

("\nstack: "

+stack.

tostring()

);system.out.

print

("pop : ");

while

(!stack.

isempty()

)//全部出棧

system.out.

print

(stack.

pop().

tostring()

+" ");

system.out.

println();}}

輸出如下:

push: a  b  c  d  e  

stack:

(e, d, c, b, a)

pop : e d c b a

push:12

345 stack:(5

,4,3

,2,1

) pop :54321

資料結構 棧 順序棧和鏈棧

順序棧 基於陣列的順序棧 include include include typedef enum status status typedef int elemtype typedef struct sqstack sqstack 函式宣告 基於陣列的順序棧 status initstack sqs...

C 實現資料結構 順序棧和鏈棧

2020年8月8日 週六 天氣晴 不悲嘆過去,不荒廢現在,不懼怕未來 用c 實現了簡單的順序棧和鏈棧類,成員函式實現了棧的基礎功能 isempty push pop top 並且用實現的棧解決了兩個問題 進製轉換和判斷表示式是否有效,是用vs2019實現的,每個函式的功能都新增了一定注釋,由於用了模...

棧的實現 順序棧和鏈棧

本文主要給出我對棧的實現,包括順序棧和鏈棧兩種實現方式。common.h ifndef common h define common h 函式結果狀態碼 define true 1 define false 0 define ok 1 define error 0 define infeasible...