void EnQueue(struct DynArrayQueue *Q, struct BinaryTreeNode *data){ if(IsFullQueue(Q)) ResizeQueue(Q); Q->rear = (Q->rear + 1) % Q->capacity; Q->array[Q->rear] = data; if(Q->front == -1) Q->front = Q->rear; }
void EnQueue(QNode* queue,int data){ if(IsFullQueue(queue)){ ResizeQueue(queue); }else{ queue->rear=(queue->rear+1)%queue->capacity; queue->Array[queue->rear]=data; if(queue->front==-1){ queue->front=queue->rear; } } }
void EnQueue(QNode* queue,char* data){ if(IsFullQueue(queue)){ return; }else{ queue->rear=(queue->rear+1)%queue->capacity; queue->Array[queue->rear]=data; if(queue->front==-1){ queue->front=queue->rear; } } }
/******************************************************************* 函数功能: 将数据插入队列 入口参数: element:被插元素 返 回 值: 1: 成功; 0:失败 ********************************************************************/ u8 InsertQueue(_CANQUEUE* canqueue,u16 CAN_ID,u8 Msg[8]) { CPU_SR_ALLOC();// 申请cpu_sr //// CPU_CRITICAL_ENTER(); // 关键段,关闭全局中断,视具体情况添加此语句 if(!IsFullQueue(canqueue))//是否为满 { _CANMSG CANMsg; CANMsg.CAN_ID = CAN_ID; memcpy(CANMsg.Msg,Msg,2*sizeof(Msg)); memcpy(&canqueue->Elem[canqueue->rear],&CANMsg,sizeof(CANMsg)); canqueue->rear = (canqueue->rear + 1) % MAX_CAN_QUEUE_SIZE; CPU_CRITICAL_EXIT(); // 退出关键段,开启全局中断,视具体情况添加此语句 return 1; } else //队列满 { CPU_CRITICAL_EXIT(); // 退出关键段,开启全局中断,视具体情况添加此语句 return 0; } }