队列是一种特殊的线性表
队列仅在线性表的两端进行操作
队头(Front):取出数据元素的一端
队尾(Rear):播入数据元素的一端
队列不允许在中间部位进行操作
SeqQueue.h
#include "seqlist_head.h"
typedef void SeqQueue;
SeqQueue* SeqQueue_Creat(int capacity);
void SeqQueue_Destroy(SeqQueue *pqueue);
void SeqQueue_Clear(SeqQueue *pqueue);
int SeqQueue_Enter(SeqQueue *pqueue);
void* SeqQueue_Out(SeqQueue *pqueue);
void* SeqQueue_Header(SeqQueue *pqueue);
int SeqQueue_Length(SeqQueue *pqueue);
int SeqQueue_Capacity(SeqQueue *pqueue);
.cpp
#include "Seq_Queue.h"
//队列相当于一个特殊的线性表
SeqQueue* SeqQueue_Creat(int capacity)
{
return SeqList_Create(capacity);
}
void SeqQueue_Destroy(SeqQueue *pqueue)
{
SeqList_Destroy(pqueue);
}
void SeqQueue_Clear(SeqQueue *pqueue)
{
SeqList_Clear(pqueue);
}
int SeqQueue_Enter(SeqQueue *pqueue,void *item)
{
return SeqList_Insert(pqueue, (SeqListNode*)item, SeqList_Length(pqueue));
}
void* SeqQueue_Out(SeqQueue *pqueue)
{
return SeqList_Delete(pqueue, 0);
}
void* SeqQueue_Header(SeqQueue *pqueue)
{
return SeqList_Get(pqueue, 0);
}
int SeqQueue_Length(SeqQueue *pqueue)
{
return SeqList_Length(pqueue);
}
int SeqQueue_Capacity(SeqQueue *pqueue)
{
return SeqList_Capacity(pqueue);
}
main.cpp
int main()
{
SeqQueue *pqueue = SeqQueue_Creat(10);
int arr[10] = { 0 };
for (int i = 0; i < 5; i++)
{
arr[i] = i + 1;
SeqQueue_Enter(pqueue, (void*)&arr[i]); //入队列
}
printf("SeqQueue_Length:%d \n", SeqQueue_Length(pqueue));
printf("SeqQueue_Header:%d \n", *(int*)SeqQueue_Header(pqueue));
printf("SeqQueue_Capacity:%d \n", SeqQueue_Capacity(pqueue));
printf("SeqQueue_Out : ");
while (SeqQueue_Length(pqueue)>0)
{
printf("%d ", *(int*)SeqQueue_Out(pqueue));
}
printf("\n");
SeqQueue_Destroy(pqueue);
system("pause");
return 0;
}