为什么n=100,m=1时会出问题

#include <bits/stdc++.h>
using namespace std;
struct node {
    int data;
    struct node *next;
};
node *f(node *a, int n) {
    a->next = NULL;
    a->data = 1;
    node *p = a;
    if (n == 1) {
        a->next = a;
        return a;
    }
    int i = 2;
    node *s;
    while (i <= n) {
        s = (node *)malloc(sizeof(node));
        s->data = i;
        s->next = NULL;
        p->next = s;
        p = p->next;
        i++;
    }
    s->next = a;
    return a;
}
int main() {
    int n, m;
    cin >> n >> m;
    node *l = (node *)malloc(sizeof(node));
    l = f(l, n);
    node *p = l;
    p = l;
    int k = 0;
    while (p->next != p) {
        k++;
        if (k == m - 1) {
            node *temp;
            temp = p->next;
            p->next = p->next->next;
            free(temp);
            k = 0;
        }
        p = p->next;
    }
    cout << p->data;
    return 0;
}

 

因为你的k初值是0,+1之后是1,m如果是1,m-1=0,k永远也不可能得0