用C语言实现删除环形队列第K个元素 10

用C语言实现删除环形队列第K个元素... 用C语言实现删除环形队列第K个元素 展开
 我来答
百度网友6567883c53
推荐于2018-05-06 · TA获得超过4737个赞
知道大有可为答主
回答量:1260
采纳率:0%
帮助的人:1379万
展开全部
楼主你好。
我现在假设环形队列一定可以找到第k个元素,如下:
void DeleteIndexedNode(DList* thiz, int k){//删除第k个元素
DNode* iter=thiz->first;
DNode* pIter;
int index;//假设队列从1开始编号
if(!iter)//队列为空,取消删除
return;
//若想绕一周不再删除,上面可以if(!iter || k > thiz->length) return;//若队列为空或超过一周,取消删除
if( k == 1){//若删除首个节点
thiz->first = iter->next;
thiz->last->next = thiz->first;//DList结构若不是双向链表,应该有一个last指针,提高效率
DestroyDNode(iter);//这个是你自己定制的DNode的析构函数
return;
}
//若删除其他节点
do{
pIter = iter;//pIter指向iter前一个节点,用于帮助析构。
iter = iter->next;
index++;
}while(index < k) ;//因为是环形队列,肯定可以找到第k个元素,而且iter不会为NULL
pIter->next = iter->next;//iter的前一个节点的next绕过iter
DestroyDNode(iter);//这个是你自己定制的DNode的析构函数
return;
}
以上函数可以实现删除第K个元素,有什么问题可以再问我。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欢乐多Ek
2012-12-11 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:417万
展开全部
int i=0;
while((++i)<K)
{
Node=Node->Next;
}
ListNode *_tmpNode=Node->Next;
Node=Node->Next->Next;
delete _tmpNode;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式