当前位置: 首页 > article >正文

C语言练习(29)

13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。本题要求用链表实现。

#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构体
typedef struct Node {
    int num;
    struct Node* next;
} Node;

// 创建循环链表
Node* createList(int n) {
    Node* head, * p, * q;
    head = (Node*)malloc(sizeof(Node));
    head->num = 1;
    p = head;
    for (int i = 2; i <= n; i++) {
        q = (Node*)malloc(sizeof(Node));
        q->num = i;
        p->next = q;
        p = q;
    }
    p->next = head;
    return head;
}

// 执行报数并删除节点操作
Node* deleteNode(Node* head) {
    Node* p = head, * prev;
    while (p->next != p) {
        for (int i = 1; i < 3; i++) {
            prev = p;
            p = p->next;
        }
        prev->next = p->next;
        Node* temp = p;
        p = p->next;
        free(temp);
    }
    return p;
}

int main() {
    Node* head = createList(13);
    Node* last = deleteNode(head);
    printf("最后留在圈子中的人的原始序号是: %d\n", last->num);
    free(last);
    return 0;
}


http://www.kler.cn/a/524057.html

相关文章:

  • 【Rust自学】14.6. 安装二进制crate
  • 架构技能(六):软件设计(下)
  • 正则表达式入门
  • C++并发编程指南04
  • 算法基础学习——二分查找(附带Java模板)
  • hive:数据导入,数据导出,加载数据到Hive,复制表结构
  • PWM频率测量方法
  • langchain基础(二)
  • 【数据结构】_链表经典算法OJ:分割链表(力扣—中等)
  • 信息学奥赛一本通 1390:食物链【NOI2001】| 洛谷 P2024 [NOI2001] 食物链
  • 通过 NAudio 控制电脑操作系统音量
  • 8638 直接插入排序
  • 9.7 打造你的专属智能助手:基于 GPT Builder 定制化 ChatGPT 应用全指南
  • 智能客服系统:结合 AI 模型与数据库实现对话与知识检索
  • FastAPI + GraphQL + SQLAlchemy 实现博客系统
  • DearMom婴儿车:书籍点亮希望,为乡村留守儿童架起知识桥梁
  • 【1.安装ubuntu22.04】
  • (四)线程 和 进程 及相关知识点
  • postgres基准测试工具pgbench如何使用自定义的表结构和自定义sql
  • Autogen_core:Concurrent Agents
  • 出现 Error processing condition on org.springframework.cloud.openfeign 解决方法
  • 线程局部存储tls的原理和使用
  • C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed
  • 智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用
  • vim交换文件的工作原理
  • 知网爬虫,作者、摘要、题目、发表期刊等主要内容的获取