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...