「抽象」《大話資料結構》第四章 隊

2021-10-05 22:58:10 字數 2559 閱讀 3599

佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

資料部分:

線性表的資料元素同型別,相鄰元素具有前驅和後驅關係

操作部分:

1 建立空佇列

2 釋放佇列的儲存空間

3 從隊尾插入新的元素

4 從隊頭刪除元素

迴圈佇列其實就是佇列的順序儲存結構,即元素在儲存空間上是連續的。

定義front指標指向隊頭,rear指標指向隊尾元素的的後乙個空閒元素位置。

判斷佇列是否為空:

rear == front

判斷佇列是否隊滿:

為了區別於隊空的判斷條件,規定隊滿時,rear後面保留乙個空閒元素。由於是迴圈佇列,rear可能會大於front, 也有可能小於front,假設佇列長度為size。、

1 當front > rear時,若rear + 1 = front,即(rear + 1)% size = front。

2 當rear > front時,唯一隊滿的情況就是front指向第乙個,rear 指向倒數第二個。rear + 1 = size,此時front 也指向下標為0的結點,故依然滿足(rear + 1)% size = front。

計算佇列長度:

當front > rear時,佇列長度分為兩段,一段是size - front,另一段是rear - 0,然後相加:rear - front + size。

當rear > front時,佇列長度就為rear - front。

為了統一公式:rear - front是二者共同點,(rear - front + size)%size

定義資料型別:

結構體需要資料域,需要記錄隊頭的下標的front變數和記錄隊尾下標的rear變數。

**如下:

#include

#define size 20

typedef

int qelemtype;

typedef

struct

佇列的初始化:

佇列的初始化就是給隊頭front和隊尾rear都賦0.

**如下:

status init_queue

(queue *init_queue)

求佇列長度:

就是利用公式(rear - front + size)%size

**如下:

int

obtain_longth

(queue *queue)

入隊操作:

1 判斷隊滿:(rear + 1)% size = front

2 賦值給資料域

3 隊尾後移一位(rear + 1)% size

**如下:

status in_queue

(queue *in_queue, qelemtype new_data)

出隊操作:

1 判斷佇列是否為空:rear=front

2 把front的值賦給刪除元素指標

3 front向後移動一位(front + 1)%size

**如下:

status out_queue

(queue *out_queue, qelemtype *delete_data)

定義資料型別:

1 定義鍊錶結點

2 定義儲存隊頭、隊尾指標的結構體,通過它,來操作隊鍊錶。

typedef

struct qnode

qnode,

*queuptr;

typedef

struct

linkqueue;

入隊操作:

1 rear->next = newnode。rear = newnode。rear->next = null。

status in_link_queue

(linkqueue *ptr,qelemtype new_data)

出隊操作:

1 判斷鍊錶是否為空,rear= front

2 delete_node = front,delete_node->data給刪除資料指標,delete_node->next 賦值給front->next。

3 如果被刪除的結點是隊尾,則將尾指標指向頭結點。

4 free(delete_node )

**如下:

status out_link_queue

(linkqueue *ptr,qelemtype *delete_data)

「抽象」《大話資料結構》第四章 棧

首先棧是一種線性表,他比較特殊,只能在表尾進行插入和刪除操作。資料型別 棧的每乙個元素依然是結構體,有資料域,有棧頂指標。對應操作 1 初始化操作,建立乙個空棧。2 釋放棧的分配空間 3 在棧頂插入新的元素 4 刪除掉棧頂的元素 5 返回棧的元素個數 根據棧的抽象資料型別,現在一一實現它。typed...

資料結構 第四章

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...

資料結構 第四章

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...