佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。
資料部分:
線性表的資料元素同型別,相鄰元素具有前驅和後驅關係
操作部分:
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 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...