c++面試題中很大乙個板塊——資料結構,主要包括線性表、棧、佇列、字串、二叉樹等等,今天我們說說佇列。
一、概念
佇列是限定性線性表,只允許在表的一端插入元素,而在另一端刪除元素的線性表。允許刪除一端稱為隊頭,允許插入一端稱為隊尾
;佇列的特性是先進先出。佇列的儲存方式有兩種:順序儲存結構和鏈式儲存結構。
二、順序儲存結構
用一組連續的儲存單元依次存放自隊頭到隊尾的資料元素,設乙個位置指標front
(隊頭指標)動態指示隊頭元素在
順序佇列中的位置,設乙個位置指標rear
(隊尾指標)動態指示隊尾元素在
順序佇列中的位置。
資料元素可以是任意型別的資料,但所
有的資料元素必須是同一種型別。front=rear
表示空佇列。
1、儲存結構
typedef int selemtype; //變數型別
#define queue_size 100 //佇列的初始大小
typedef struct seqqueue
seqqueue, *pseqqueue;
2、初始化佇列
void init_seqqueue(seqqueue *queue)
3、列印佇列
void printf_seqqueue(seqqueue *queue)
printf("\n");
}
4、佇列求長
int length_seqqueue(seqqueue *queue)
5、判斷佇列是否為空
bool isempty_seqqueue(seqqueue *queue)
6、判斷佇列是否已滿
bool isfull_seqqueue(seqqueue *queue)
7、入隊運算
bool push_seqqueue(seqqueue *queue, selemtype value)
queue->data[queue->rear] = value;
queue->rear++;
return true;
}
8、出隊運算
bool pop_seqqueue(seqqueue *queue, selemtype *value)
*value = queue->data[queue->front];
queue->front++;
return true;
}
三、鏈式儲存結構
順序表和煉表的相關熱點面試題
一,比較順序表和煉表的優缺點,說說他們分別在什麼場景下使用?順序表支援隨機訪問,單鏈表不支援 順序表插入和刪除資料效率很低,時間複雜度為o n 除尾插尾刪 單鏈表插入刪除效率更高時間複雜度為o 1 順序表的cpu快取記憶體效率更高,單鏈表cpu告訴快取低 二,刪除乙個無頭單鏈表的非尾節點 三,在乙個...
鍊錶的面試題
1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...
鍊錶的面試題
slist.h include include include typedef int datatype typedef struct listnode node,pnode 生成乙個新結點 pnode buyslistnode datatype data 列印鍊錶 void printslist ...