27 順序佇列的基本操作實現

2021-08-20 19:28:08 字數 2326 閱讀 7185

sqqueue.h檔案

#ifndef sqqueue_h

#define sqqueue_h

#include

#include

#include

//陣列大小

#define max_size 5

//定義佇列資料結構

typedef

struct sqqueue

sqqueue;

//初始化佇列

sqqueue *init_sqqueue();

//銷毀佇列

void free_sqqueue(sqqueue *queue);

//佇列是否為空

int isempty_sqqueue(sqqueue *queue);

//入佇列

void insert_sqqueue(sqqueue *queue , void *data);

//出佇列

void *remove_sqqueue(sqqueue *queue);

#endif

sqqueue.c檔案

#include "sqqueue.h"

//初始化佇列

sqqueue *init_sqqueue()

//在初始化時隊首和隊尾都指向-1

queue->front = -1;

queue->rear = -1;

return

queue;

}//銷毀佇列

void free_sqqueue(sqqueue *queue)

free(queue);

queue = null;

}//佇列是否為空

int isempty_sqqueue(sqqueue *queue)

//隊列為空返回0,不為空返回1

if(queue->front == queue->rear)

return1;}

//入佇列

void insert_sqqueue(sqqueue *queue , void *data)

//說明佇列已滿

if(queue->rear == max_size -1)

//資料入隊

queue->rear++;

queue->data[queue->rear] = data;

}//出佇列

void * remove_sqqueue(sqqueue *queue)

//隊列為空

if(queue->rear == queue->front)

//資料出隊

queue->front++;

return

queue->data[queue->front];

}

main.c檔案

#include "sqqueue.h"

//測試資料

typedef

struct student

student;

int main(void)

; student s2 = ;

student s3 = ;

student s4 = ;

student s5 = ;

printf("---------------入隊--------------\n\n");

//入隊

insert_sqqueue(queue , (void *)&s1);

insert_sqqueue(queue , (void *)&s2);

insert_sqqueue(queue , (void *)&s3);

insert_sqqueue(queue , (void *)&s4);

insert_sqqueue(queue , (void *)&s5);

printf("---------------出隊--------------\n");

//輸出佇列

int i;

for(i = 0; i < max_size; i++)

printf("---------------釋放佇列--------------\n");

//釋放佇列

free_sqqueue(queue);

return

0;}

測試結果:

順序佇列基本操作的實現

順序佇列和前面的順序表一樣,相當於乙個陣列,不同的是它的有效區間,當陣列走到最大時,又會從頭開始,這裡用head 和tail兩個下標來表示頭和尾,即當tail到達size時,tail又從0開始,head也是同樣的道理 如下 seqqueue.h pragma once define seqqueue...

順序佇列(迴圈佇列)基本操作實現 C語言

只寫了幾個主要的操作,銷毀,清空等沒有寫 include include define ok 1 define error 0 define queue size 100 typedef int status typedef int elemtype typedef struct qnode qno...

順序迴圈佇列的基本操作

名稱 順序迴圈佇列的基本操作 說明 此處說明以下有關順序迴圈佇列的判斷空,判斷滿的問題。此處採用的是少用乙個儲存元素。此外,還可以採用增加乙個標誌位tag,即指示fro rear是因為空還是因為滿。還有可以增加乙個q.size屬性來判斷是否達到空或者滿的狀態。順序佇列的儲存結構 typedef st...