美文网首页
围圈报数

围圈报数

作者: HelloSam | 来源:发表于2020-04-02 17:12 被阅读0次

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

struct Node{
    int num;
    Node * next;
};

void deleteNode(Node *p);

int main()
{
    int m,N;
    cin >> m;
    for(int i=0;i<m;i++)
    {
        cin >> N;//要产生N个节点
        
        Node *p = (Node *)malloc(sizeof(Node));
        Node *q = p;
        p->num = 1;
        for(int j=2;j<=N;j++)
        {
            Node *s = (Node *)malloc(sizeof(Node));
            s->num = j;
            p->next = s;
            p = s;
        }
            p->next = q;
        
        int flag = N;//delete一个,flag就减1,直到减到0表示全部删除了,就退出循环
        
        p = q;
        while(flag!=0)
        {
            //for(int k =0;k<2;k++)//p向后走两次就到了要删除的位置
            //{
            //  p = p->next;
            //}
            p = p->next;//现在只让他走一步,那么p的下一个就是要删除的
            cout << p->next->num << " ";
            deleteNode(p);//传给的是p,要删除的是p的下一个节点
            flag--;
            p  = p->next;
        }
        cout << endl;
    }

    return 0;
}

void deleteNode(Node *p)
{
    Node *s = p->next;
    p->next = s->next;
    free(s);
}

相关文章

  • 围圈报数

  • 围圈报数

    题目 N个人围圈进行1,2,3报数,数到3的退出,其余人继续,最后剩余的是原来队伍中的第几个。

  • 围圈报数问题的一种算法的原理解析

    围圈报数问题描述如下:有n个人围成一圈,依次编号为0,1,2,3......,然后从0开始报数,每次报数为M的倍数...

  • 一起玩游戏好吗?

    21点 玩法: 围圈, 大家开始报数, 1,2,3,4......被迫报数"21"的人为输,需惩罚. 报数过程中,...

  • 【拆书沙龙NO4】打造你的归档系统

    【活动主持】 【找搭档】:围圈,道具(玩具熊),找搭档 全体报数,单数为组长,小组排序,组长记住自己的组号。每组两...

  • 人围圈

  • [java]约瑟夫环问题

    约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?

  • 围圈不小事

    在我眼里,孩子吃饭磨叽,穿衣服磨叽,洗脸刷牙磨叽,做作业更是磨叽……我五分钟能做完的事,她一个小时都做不完,...

  • python实现小孩报数问题

    N个小孩围成一个圈,由第1个小孩开始报数,报数为M的人出局,请问最后出局的小孩是第几个 代码如下:

  • 使用单链表解决约瑟夫问题

    问题描述: N个人围成一圈,从第k个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复...

网友评论

      本文标题:围圈报数

      本文链接:https://www.haomeiwen.com/subject/flzxphtx.html