c語言實現通用資料結構(二):通用佇列
阿新 • • 發佈:2019-01-01
注意佇列中只儲存了指標,沒有儲存實際的資料。
標頭檔案 myQueue.h
#ifndef MYQUEUE_H_INCLUDED #define MYQUEUE_H_INCLUDED #include "myList.h" typedef MyList MyQueue; //建立佇列 MyQueue * createMyQueue(); //釋放佇列 void freeMyQueue(MyQueue * queue); //插入 void myQueueAdd(MyQueue* const queue, void* const data); //刪除 void* myQueueRemove(MyQueue * const queue); //取得隊頭 void* myQueueGetTop(const MyQueue * const queue); #endif // MYQUEUE_H_INCLUDED
原始檔 myQueue.c
#include "myQueue.h" //建立佇列 MyQueue * createMyQueue() { return createMyList(); } //釋放佇列 void freeMyQueue(MyQueue * queue) { freeMyList(queue); } //插入 void myQueueAdd(MyQueue* const queue, void* const data) { myListInsertDataAtLast(queue, data); } //刪除 void* myQueueRemove(MyQueue * const queue) { return myListRemoveDataAtFirst(queue); } //取得隊頭 void* myQueueGetTop(const MyQueue * const queue) { return myListGetDataAtFirst(queue); }
測試檔案 main.c
/************************* *** File main.c *** test for MyQueue **************************/ #include <stdio.h> #include <stdlib.h> #include "myQueue.h" typedef struct a { int i; char c; } A; int main() { const int S =10; //建立並初始化資料 A * data= malloc(sizeof(A)*S); for (int i=0; i< S; i++) { data[i].i=i; data[i].c=(char)('A'+i); } //建立佇列 MyQueue * queue= createMyQueue(); //插入資料 myQueueAdd(queue, &data[0]); myQueueAdd(queue, &data[2]); myQueueAdd(queue, &data[6]); //測試刪除 while(myListGetSize(queue)) { A * pp = myQueueRemove(queue); printf("%d[%c] ", pp->i, pp->c); } puts(""); //釋放連結串列 freeMyQueue(queue); //釋放資料 free(data); return 0; }