AcWing 3630. 报数游戏
原题链接
简单
作者:
浅唱笑竹神易
,
2024-10-07 23:07:26
,
所有人可见
,
阅读 4
#include<iostream>
#include<cstdio>
using namespace std;
struct LNode{
int val;
LNode *next;
};
int n;
LNode *p,*pre,*temp;
//建立环的时候需要一个不动
//建立的时候有个头节点,建好free
int main(){
cin>>n;
p=(LNode*)malloc(sizeof(LNode));
pre=p;
for(int i=1;i<=n;i++){
temp=(LNode *)malloc(sizeof(LNode));
temp->val=i;
temp->next=NULL;
pre->next=temp;
pre=pre->next;
}
/* LNode *x=p->next;
while(x!=NULL){
cout<<x->val<<endl;
x=x->next;
}*/// 没有NULL导致错误
pre->next=p->next;
pre=pre->next;
int cnt=1;
while(pre->next!=pre){
if(cnt==2){
LNode *temp=pre->next;
pre->next=temp->next;
pre=pre->next;
// cout<<temp->val<<endl;
free(temp);
cnt=1;
}else {
pre=pre->next;//忘记加上这一句
cnt++;
}
}
cout<<pre->val;
return 0;
}