資料結構之座標棧

2021-09-29 09:54:03 字數 1636 閱讀 6612

我們學習了棧的基本知識,我們規定棧是一種操作受限的線性表,棧規定資料只能從乙個埠進行插入和刪除操作(也叫入棧和出棧)

我們平時所使用的棧中都是儲存的單一元素,例如整形資料棧,浮點型資料棧等等,但在我們實際使用中,我們會遇到將一組資料存入棧的操作,如我們所講的座標棧,入棧元素為(2, 5),(3,7)這樣的資料。這裡就需要使用座標棧

class

coor

;

其中私有成員為x, y座標。

**printinfo()**為列印座標的函式

coor operator=( coor a)**為運算子過載,過載=運算子。

**coor(int x, int y)**為建構函式,用來初始化物件。

下來看過載運算子的實現

coor* coor::

operator

=( coor * a)

這裡函式在後面會使用到,在這裡先不做贅述。

這樣我們就得到了乙個座標類,類中存放的是座標物件

const

int maxsize =50;

class

stack

;

座標棧中需要注意的是在私有成員中的

coor *max成員,是乙個物件陣列

其餘都是常見的判棧空/滿函式入/出棧函式,以及顯示棧中元素過載<< 運算子函式

需要注意的是,由於我們在成員中宣告了乙個物件陣列,所以必須要在析構函式中將其釋放掉。

下面是建構函式初始化

stack::

stack()

top =-1

;}

這裡我們將棧頂指標top初始化為-1的原因是,當我們在進行入棧操作後,top++後總是指向當前元素。

在棧空時,top指標指向-1,棧滿時,top指標指向陣列最大值-1( maxsize - 1)。

《運算子過載

ostream &

operator

<<

( ostream & os, coor & s)

這裡對《過載後就可以直接輸出座標的(x, y) 。將**變得簡潔。

入出棧

void stack::

enstack

(coor *coor)

}void stack::

outstack

(coor *a)

}

入棧時,將入棧的座標傳入函式,先判斷此時棧已經滿,若棧未滿,先將棧頂指標+1,再將座標存入物件陣列中。最後將入棧元素輸出。

出棧時,先判斷此時棧是否為空,若棧為空,出棧失敗。若非空,則將要出棧的元素傳遞給形參,再將棧頂元素輸出,最後將棧頂指標-1。

int

main()

資料結構之棧結構

棧結構是一種filo first in last out 的批量資料儲存結構。其特點是先進後出,後來者居上 棧的基本屬性 棧記憶體 棧頂標記 棧的當前元素個數 萬金油屬性 size 棧的基本操作 萬金油的的操作 根據實現的不同將棧結構分為兩種 1.鏈式棧 2.陣列 利用有表頭鍊錶的頭插法來完成棧的功...

資料結構之棧

4.8.2 四則運算表示式求值 程式如下所示 include include include 定義結點型別 typedef struct node node,pnode 定義棧的抽象資料型別 typedef struct stack stack,pstack 函式宣告 對棧進行初始化的函式 void...

資料結構之棧

資料結構之棧 本文討論棧的陣列實現。棧需要有如下幾個屬性 棧的容量 capacity 棧頂指標 儲存棧元素的陣列 根據這幾個屬性可以定義乙個棧結構體 struct stackrecord 然後定義棧的操作,一般可以包含如下幾個 棧的建立 stack createstack int size 棧的銷毀...