用c语言实现删除环形队列第k个元素
voiddelelemk(cqueue&cq,intk,int&x)//算法功能删除队列cq第i个元素原程序前后内容可以百度到http://wenku.baidu.com...
void delelemk(cqueue &cq,int k,int &x)
//算法功能删除队列cq第i个元素
原程序前后内容可以百度到
http://wenku.baidu.com/link?url=hIh4L-rtcR166RcQNxvGGEaymYRXSmyqwMDNH5FCDKAZkmhMroWP98SDFlkC01h4eW_jSghrNGuI5T-PuF0pbBQw9oULBPF_xOnb-RuiUza 展开
//算法功能删除队列cq第i个元素
原程序前后内容可以百度到
http://wenku.baidu.com/link?url=hIh4L-rtcR166RcQNxvGGEaymYRXSmyqwMDNH5FCDKAZkmhMroWP98SDFlkC01h4eW_jSghrNGuI5T-PuF0pbBQw9oULBPF_xOnb-RuiUza 展开
1个回答
展开全部
if (cq.front == cq.rear)
error("err2");//环形队列空出错
else
if(k>=m||k>(cq.rear-cq.front))
{
cout<<"元素越界"<<endl;
}
else {
x = cq.e[(cq.front+k)%m]; //取出第k个元素
while((cq.front+k)%m<cq.rear)//之后的元素向前挪动
{
cq.e[(cq.front+k)%m] =cq.e[(cq.front+k+1)%m];
k++;
}
cq.rear=(cq.rear+m-1)%m;//向前减一,要加m以免越界。。。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询