循序漸進學習棧和佇列

2021-09-02 01:18:11 字數 2259 閱讀 6976

是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義稱為棧頂,相應地,表頭端稱為棧底。棧的修改是按後進先出的原則進行的,因此又稱後進先出表。

解釋:棧是乙個很簡單的資料結構,但是好多人不能理解它的重要的特性,即只能在棧頂的位置進行操作,可以理解棧是乙個水杯,只能在杯口倒水或者喝水。

1.定義:只能在表的一端(棧頂)進行插入和刪除運算的線性表

2.邏輯結構:與線性表相同,仍為一對一關係

**4.運算規則:只能在棧頂運算,且訪問結點時依照後進先出(lifo)先進後出(filo)**的原則

**5.實現方式:**關鍵是編寫入棧和出棧函式,具體實現依順序棧或鏈棧的不同而不同。

typedef

struct

sqstack;

// 順序棧型別定義

void

init

(sqstack &st)

int

isempty

(sqstack st)

int

push

(sqstack &st ,

int x)

int pop (sqstack &st,

int&x)

是一種先進先出的線性表,它只允許在表的一端進行插入,而在另一端刪除元素,在佇列中,允許插入的一端稱做隊尾,允許刪除的一端稱做隊頭。

解釋:佇列是乙個很簡單的資料結構,從隊尾插入,隊頭刪除,可以理解佇列是乙個單行道,如圖可知。

**1.定義:**只能在表的一端(隊尾)進行插入,在另一端(隊頭)進行刪除運算的線性表

**2.邏輯結構:**與線性表相同,仍為一對一關係

3.儲存結構:用順序佇列或鏈隊儲存均可

**4.運算規則:**先進先出(fifo)

**5.實現方式:**關鍵是編寫入隊和出隊函式,具體實現依順序隊或鏈隊的不同而不同

#define m  100   

//最大佇列長度

typedef struct

sqqueue;

空隊標誌:front=

=rear

入隊:base[rear++

]=x;

出隊:x=base[front++

];

介紹迴圈佇列之前首先來看看一種現象:

這種現象也是佇列的弊端,發生假溢位現象。如果解決-----迴圈佇列

如上圖可以知道,迴圈佇列的入隊和出隊的條件一樣。沒辦法區分。

解決方案:

1.另外設乙個標誌以區別隊空、隊滿

2.少用乙個元素空間:隊空:frontrear;隊滿:(rear+1)%mfront

#define maxqsize  100  

//最大長度

typedef struct

sqqueue;

status initqueue (sqqueue &q)

int  queuelength (sqqueue q)

status enqueue

(sqqueue &q,qelemtype e)

status dequeue (linkqueue &q,qelemtype &e)

循序漸進學習棧和佇列

是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義稱為棧頂,相應地,表頭端稱為棧底。棧的修改是按後進先出的原則進行的,因此又稱後進先出表。解釋 棧是乙個很簡單的資料結構,但是好多人不能理解它的重要的特性,即只能在棧頂的位置進行操作,可以理解棧是乙個水杯,只能在杯口倒水或者喝...

循序漸進學習Django

利用這一星期的業餘時間學習django,學到了模板系統,感覺還是不錯,很簡單的東東,django是個python web框架,即然是框架,就提供了很多已經封裝好的能夠快速解決問題的方法.所以忽然覺得太先進的框架反而對自己的python基礎發展不太好.即使學會了django提供的模板使用方法,但是不知...

循序漸進學習oracle

1.需要了解資料庫原理基本知識,明白行 列概念,有關係型資料庫知識。2.有環境學習資料庫,如自己xp上安裝,或公司的小型機,或pc,linux,solaris,aix,或hp unix等等環境。3.開始學習sql基礎。dml,ddl,dcl,等等多加練習。先過sql這一關。4.安裝oracle,9i...