注意这道题是 Front 指向第一个数据, Rear 指向最后一个元素的下一个位置
bool Push( ElementType X, Deque D )
{
if( (D->Rear+1)%D->MaxSize == D->Front )
return false;
D->Front = (D->Front-1+D->MaxSize)%D->MaxSize;
D->Data[D->Front]=X;
return true;
}
ElementType Pop( Deque D )
{
if( D->Front==D->Rear )
return ERROR;
ElementType temp = D->Data[D->Front] ;
D->Front = (D->Front+1+D->MaxSize)%D->MaxSize;
return temp ;
}
bool Inject( ElementType X, Deque D )
{
if( (D->Rear+1)%D->MaxSize == D->Front )
return false;
D->Data[D->Rear]=X;
D->Rear = (D->Rear+1)%D->MaxSize;
return true;
}
ElementType Eject( Deque D )
{
if( D->Front==D->Rear )
return ERROR;
D->Rear = (D->Rear-1+D->MaxSize)%D->MaxSize;
return D->Data[D->Rear];
}
本文介绍了一种双端队列的数据结构实现方法,包括插入和删除等基本操作,并详细展示了通过指针管理和模运算来高效处理环形数组中的元素。
1131

被折叠的 条评论
为什么被折叠?



