微信商城和微网站,青海网站建设哪家强,小红书推广网站,微信推广13个人围成一圈#xff0c;从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子#xff0c;找出最后留在圈子中的人原来的序号。本题要求用链表实现。
#include stdio.h
#include stdlib.h// 定义链表节点结构体
typedef struct Node {int num;struct Nod…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;
}