队列v1.3
This commit is contained in:
@@ -3,24 +3,23 @@
|
|||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
|
||||||
int a[10]; //创建队列容器
|
|
||||||
SqQuecu a_quecu; //初始化队列
|
SqQuecu a_quecu; //初始化队列
|
||||||
InitQuecu(&a_quecu,10,sizeof(int),(void*)a);
|
|
||||||
//出队进队测试
|
//出队进队测试
|
||||||
int *tmep;//临时存储进对的返回值
|
int *tmep;//临时存储进对的返回值
|
||||||
for (size_t i = 0; i < 50; i++)
|
for (size_t i = 0; i < 50; i++)
|
||||||
{
|
{
|
||||||
tmep = (int*)enQueue(&a_quecu);
|
tmep = (int*)enQueue(&a_quecu);
|
||||||
if(tmep!=NULL){ //返回值为空指针则对满
|
if(tmep!=NULL){ //返回值为空指针则队满
|
||||||
*tmep=i;
|
*tmep=i;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
||||||
*(int*)enQueue(&a_quecu)=i; //出队后重新进队
|
*(int*)enQueue(&a_quecu)=i; //出队后重新进队
|
||||||
}
|
}
|
||||||
for(int i=0;i<10;i++)
|
/*******遍历队列**********/
|
||||||
printf("%d\n",a[i]);
|
for(int i=0;i<a_quecu.Maxsize;i++)
|
||||||
|
printf("%d\n",*(int*)(a_quecu.container+i*a_quecu.NodeSize));
|
||||||
|
/*******遍历队列**********/
|
||||||
printf("-------------------------\n");
|
printf("-------------------------\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -30,7 +29,7 @@ int main(){
|
|||||||
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
||||||
printf("当前队列长度:%d\n",a_quecu.size);
|
printf("当前队列长度:%d\n",a_quecu.size);
|
||||||
}
|
}
|
||||||
|
DestroyQueue(&a_quecu);
|
||||||
|
printf("队列已销毁\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
*@作者:‘你遇了我’
|
*@作者:‘你遇了我’
|
||||||
*@time:2022/11/13
|
*@time:2022/11/13
|
||||||
*@联系:QQ:321640253
|
*@联系:QQ:321640253
|
||||||
*@版本:V1.2
|
*@版本:V1.3
|
||||||
*@描述:数组泛型队列。队列管理和容器空间分离
|
*@描述:数组泛型队列。队列管理和容器空间分离
|
||||||
使用案例:
|
使用案例:
|
||||||
|
|
||||||
@@ -23,12 +23,12 @@
|
|||||||
* *container:容器数组指针
|
* *container:容器数组指针
|
||||||
* @返回值:无
|
* @返回值:无
|
||||||
* */
|
* */
|
||||||
void InitQuecu(SqQuecu *Q,uint16_t Maxsize,uint16_t NodeSize,void *container){
|
void InitQuecu(SqQuecu *Q,uint16_t Maxsize,uint16_t NodeSize){
|
||||||
Q->front=Q->rear=-1;
|
Q->front=Q->rear=-1;
|
||||||
Q->size=0;
|
Q->size=0;
|
||||||
Q->Maxsize=Maxsize;
|
Q->Maxsize=Maxsize;
|
||||||
Q->NodeSize=NodeSize;
|
Q->NodeSize=NodeSize;
|
||||||
Q->container=container;
|
Q->container=calloc(Maxsize,Q->NodeSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -80,3 +80,12 @@ void *deQueue(SqQuecu *Q){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @简介:销毁队列
|
||||||
|
* @参数:队列指针
|
||||||
|
*/
|
||||||
|
void DestroyQueue(SqQuecu *Q){
|
||||||
|
free(Q->container);
|
||||||
|
Q->front=Q->rear=Q->size=Q->Maxsize=Q->NodeSize=0;
|
||||||
|
Q->container=NULL;
|
||||||
|
}
|
||||||
@@ -3,28 +3,29 @@
|
|||||||
*@作者:‘你遇了我’
|
*@作者:‘你遇了我’
|
||||||
*@time:2022/11/13
|
*@time:2022/11/13
|
||||||
*@联系:QQ:321640253
|
*@联系:QQ:321640253
|
||||||
*@版本:V1.2
|
*@版本:V1.3
|
||||||
*@描述:数组泛型队列,队列管理和容器空间分离
|
*@描述:数组泛型队列,队列管理和容器空间分离
|
||||||
使用案例
|
使用案例
|
||||||
int a[10]; //创建队列容器
|
int main(){
|
||||||
SqQuecu a_quecu; //初始化队列
|
|
||||||
InitQuecu(&a_quecu,10,sizeof(int),(void*)a);
|
|
||||||
|
|
||||||
|
SqQuecu a_quecu; //初始化队列
|
||||||
|
InitQuecu(&a_quecu,10,sizeof(int));
|
||||||
//出队进队测试
|
//出队进队测试
|
||||||
int *tmep;//临时存储进对的返回值
|
int *tmep;//临时存储进对的返回值
|
||||||
for (size_t i = 0; i < 50; i++)
|
for (size_t i = 0; i < 50; i++)
|
||||||
{
|
{
|
||||||
tmep = (int*)enQueue(&a_quecu);
|
tmep = (int*)enQueue(&a_quecu);
|
||||||
if(tmep!=NULL){ //返回值为空指针则对满
|
if(tmep!=NULL){ //返回值为空指针则队满
|
||||||
*tmep=i;
|
*tmep=i;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
||||||
*(int*)enQueue(&a_quecu)=i; //出队后重新进队
|
*(int*)enQueue(&a_quecu)=i; //出队后重新进队
|
||||||
}
|
}
|
||||||
|
//*******遍历队列**********
|
||||||
for(int i=0;i<10;i++)
|
for(int i=0;i<10;i++)
|
||||||
printf("%d\n",a[i]);
|
printf("%d\n",*(int*)(a_quecu.container+i*a_quecu.NodeSize));
|
||||||
|
//*******遍历队列**********
|
||||||
printf("-------------------------\n");
|
printf("-------------------------\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -34,6 +35,10 @@
|
|||||||
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
printf("出队元素:%d\n",*(int*)deQueue(&a_quecu));
|
||||||
printf("当前队列长度:%d\n",a_quecu.size);
|
printf("当前队列长度:%d\n",a_quecu.size);
|
||||||
}
|
}
|
||||||
|
DestroyQueue(&a_quecu);
|
||||||
|
printf("队列已销毁\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LIST_QUEUE_H
|
#ifndef LIST_QUEUE_H
|
||||||
@@ -52,11 +57,11 @@ typedef struct{
|
|||||||
uint16_t size; //队列长度
|
uint16_t size; //队列长度
|
||||||
} SqQuecu;
|
} SqQuecu;
|
||||||
|
|
||||||
void InitQuecu(SqQuecu *Q,uint16_t Maxsize,uint16_t NodeSize,void *container);
|
void InitQuecu(SqQuecu *Q,uint16_t Maxsize,uint16_t NodeSize); //初始化队列
|
||||||
void *enQueue(SqQuecu *Q);
|
void *enQueue(SqQuecu *Q); //进队
|
||||||
void *deQueue(SqQuecu *Q);
|
void *deQueue(SqQuecu *Q); //出队
|
||||||
bool QueueEmpty(SqQuecu *Q);
|
bool QueueEmpty(SqQuecu *Q); //判断队空
|
||||||
bool QueueFull(SqQuecu *Q);
|
bool QueueFull(SqQuecu *Q); //判断队满
|
||||||
|
void DestroyQueue(SqQuecu *Q); //销毁队列(只销毁队列容器,队列指针本身还在)
|
||||||
|
|
||||||
#endif //LIST_QUEUE_H
|
#endif //LIST_QUEUE_H
|
||||||
|
|||||||
Reference in New Issue
Block a user