鏈棧和順序棧的實現

2021-09-02 10:09:47 字數 2530 閱讀 9030

//

順序棧

// #ifndef

astack_h

#define

astack_h

#include

"stack.h"

template

<

class

elem

>

class

astack

: public

stack

<

elem

>

~astack()

void

clear()

bool

push

(const

elem

& item)

} bool

pop(

elem

& it)

} bool

topvalue

(elem

& it)

} int

length

() const

//利用棧將棧逆置

//具體分為以下幾步:宣告乙個變數,用來臨時存放棧頂元素,記為a;

//宣告乙個順序棧,棧長比原棧小

1,記為ls;

//首先將棧頂元素放入

a,將剩下的元素放入

ls,再將

a放入原棧,接著將

ls中所有元素放入原棧;

//重複n此,

n為棧長;

void

reverlist()

this

->

push

(a);

while

(ls.

length

())

} }

}; #endif

//stack

類,定義棧中的方法

//只有五個方法:

1、清空;

2、進棧;

3、出棧;

4、獲得棧頂元素值;

5、輸出棧高

#ifndef

stack_h

#define

stack_h

#include

using

namespace

std;

template

<

class

elem

>

class

stack;

#endif;

//鏈式棧的節點

#ifndef

slink_h

#define

slink_h

//鏈棧節點

#include

using

namespace

std;

template

<

class

elem

>

class

slink

slink

(slink

* nextval

=null)

}; #endif

// ! slink_h

//鏈式棧

#ifndef

lstack_h

#define

lstack_h

#include

"stack.h"

#include

"slink.h"

template

<

class

elem

>

class

lstack

: public

stack

<

elem

>

~lstack()

//清空表 //

清空表的操作流程:將

top元素乙個乙個

delete掉

void

clear()

else

delete

top;

size--;

cout << size << endl; }

} //入棧

bool

push

(const

elem

& item)

//出棧

bool

pop(

elem

& it)

} //

獲取棧頂值

bool

topvalue

(elem

& it)

//獲取棧長

intlength

() const

// void

reverlist()

this

->

push

(a);

while

(ls.

length

())

} }

}; #endif

棧 實現鏈棧和順序棧)

按不同的儲存結構,可以將棧分為順序棧和鏈棧。順序棧的實現 typedef int datatype const int maxnum 1000 struct sqstack 判斷棧空 bool isempty else return false 判斷棧滿 bool isfull else retur...

C 鏈式棧和順序棧

分類 1.順序棧 2.鏈式棧 常用操作 push 和 pop 常見應用 1.括號匹配問題 2.逆波蘭表示式 說明 個人c 練習 鏈式棧 優點 棧的大小靈活 缺點 不能像陣列一樣靈活遍歷 include using namespace std 鏈式棧 struct data struct stackn...

順序棧和順序佇列

1.棧的定義 棧是限定在表尾進行插入和刪除操作的線性表 把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出的線性表。棧的插入操作,叫做進棧,也稱為壓棧,入棧。子彈入彈夾 棧的刪除操作,叫做出棧,也有的叫做彈棧。1 順序棧的進棧操作 插...