数据结构猴子选大王 算法思路 15
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
上海华然企业咨询有限公司专注于AI与数据合规咨询服务。我们的核心团队来自头部互联网企业、红圈律所和专业安全服务机构。凭借深刻的AI产品理解、上百个AI产品的合规咨询和算法备案经验,为客户提供专业的算法备案、AI安全评估、数据出境等合规服务,...
点击进入详情页
本回答由上海华然企业咨询提供
展开全部
使用循环链表,
链表定义为
typedef struct node{
int data;
struct *next;
}linklist;
从第一个节点开始计数,记到哪个节点就将其删除,然后将这个节点的下个节点赋给该节点的上个节点的next
算法:
while (total!=1)
{
/* 报数过程,p指向要删除的节点 */
for (i=1;i<m;i++)
{
p=p->next;
}
/* 打印要删除的节点序号 */
printf("[%d] ",p->data);
/* q 指向 p 节点的前驱 */
while(q->next!=p)
{
q=q->next;
}
/* 删除 p 节点 */
q->next=p->next;
/* 保存被删除节点指针 */
s=p;
/* p 指向被删除节点的后继 */
p=p->next;
/* 释放被删除的节点 */
free(s);
/* 节点个数减一 */
total--;
}
最后剩下的节点即为所求。
链表定义为
typedef struct node{
int data;
struct *next;
}linklist;
从第一个节点开始计数,记到哪个节点就将其删除,然后将这个节点的下个节点赋给该节点的上个节点的next
算法:
while (total!=1)
{
/* 报数过程,p指向要删除的节点 */
for (i=1;i<m;i++)
{
p=p->next;
}
/* 打印要删除的节点序号 */
printf("[%d] ",p->data);
/* q 指向 p 节点的前驱 */
while(q->next!=p)
{
q=q->next;
}
/* 删除 p 节点 */
q->next=p->next;
/* 保存被删除节点指针 */
s=p;
/* p 指向被删除节点的后继 */
p=p->next;
/* 释放被删除的节点 */
free(s);
/* 节点个数减一 */
total--;
}
最后剩下的节点即为所求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询