如果直接復用之前的順序表,那麼在佇列的入隊和出隊操作裡,勢必會有乙個操作的時間複雜度是o(n),因為發生了陣列元素的挪移操作。下面是優化後的順序佇列,其中使用了乙個頭位置和乙個尾位置來迴圈的使用陣列空間,以達到入隊和出隊的時間複雜度都是o(1)。
#ifndef optseqqueue
#define optseqqueue
#ifndef null
#define null 0
#endif
/* 元素型別 */
typedef int elem_t;
/* 順序表結構體 */
typedef struct
opt_seq_queue;
/** * 優化順序佇列初始化
* @param capacity
* @return
*/opt_seq_queue *opt_seq_queue_init(int capacity);
/** * 入隊
* @param p 佇列指標
* @return 成功:1,失敗:0
*/int opt_seq_queue_enqueue(opt_seq_queue *p,elem_t *pe);
/** * 出隊
* @param p 佇列指標
* @return 返回元素的值
*/elem_t opt_seq_queue_dequeue(opt_seq_queue *p);
/** * 獲取對頭元素的值
* @param p 佇列指標
* @return
*/elem_t opt_seq_queue_header(opt_seq_queue *p);
/** * 獲取佇列長度
* @param p
* @return
*/int opt_seq_queue_length(opt_seq_queue *p);
/** * 佇列清空
* @param p
* @return
*/int opt_seq_queue_clear(opt_seq_queue *p);
/** * 銷毀佇列
* @param p
* @return
*/int opt_seq_queue_destroy(opt_seq_queue *p);
#endif // optseqqueue
#include "optseqqueue.h"
#include /**
* 優化順序佇列初始化
* @param capacity
* @return
*/opt_seq_queue *opt_seq_queue_init(int capacity)
return plist;
}/**
* 入隊
* @param p 佇列指標
* @return 成功:1,失敗:0
*/int opt_seq_queue_enqueue(opt_seq_queue *p,elem_t *pe)
return ret;
}/**
* 出隊
* @param p 佇列指標
* @return 返回元素的值
*/elem_t opt_seq_queue_dequeue(opt_seq_queue *p)
return temp;
}/**
* 獲取對頭元素的值
* @param p 佇列指標
* @return
*/elem_t opt_seq_queue_header(opt_seq_queue *p)
return temp;
}/**
* 獲取佇列長度
* @param p
* @return
*/int opt_seq_queue_length(opt_seq_queue *p)
return ret;
}/**
* 佇列清空
* @param p
* @return
*/int opt_seq_queue_clear(opt_seq_queue *p)
return ret;
}/**
* 銷毀佇列
* @param p
* @return
*/int opt_seq_queue_destroy(opt_seq_queue *p)
return ret;
}
C 資料結構 9 順序佇列
佇列 先進先出 fifo 或者後進後出 lilo templatequeue queue int capacity capacity capacity 初始化建構函式 templatequeue queue templatebool queue isempty const 判斷是否為空 templa...
資料結構順序佇列
佇列是一種特殊的 線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。順序佇列 ifndef sqqueue h define sqqueue h incl...
資料結構 順序佇列
1 佇列簡稱隊,它是一種操作受限的線性表,其限制為在標的一段進行插入,而在包的另一端進行刪除。把進行插入的一端稱為隊尾 rear 把進行刪除的一端稱作隊頭或隊首 front 向佇列中插入新元素稱為進隊或入隊,新的元素進隊後就成為新的隊尾元素 從佇列中刪除元素稱為出隊或離隊,元素出隊後,其直接後繼元素...