文章
16
粉丝
0
获赞
38
访问
939
#include <bits/stdc++.h>
using namespace std;
struct Node{
int val;
Node* next = nullptr;
};
int func(Node* head)
{
Node* ptr_f = head;
Node* ptr_s = head;
while(head->val != 1)
{
ptr_f = ptr_f->next->next->next; // 快的走三步
ptr_s = ptr_s->next->next; // 慢的走两步
//cout << ptr_f->val << endl;
// 删除操作
ptr_s->next = ptr_f->next;
delete ptr_f;
ptr_f = ptr_s;
head->val--;
}
// 最后 ptr_f所在位置为最后一个节点
return ptr_f->val;
}
int main()
{
Node* head = new Node();
head->val = 0;
Node* r = head;
int n;
cin >> n;
for(int i = 1;i <= n;++i)
{
r->next = new Node();
r->next->val = i;
head->val++;
r = r->next;
}
r->next = head->next; // 循环链表
cout << func(head) << endl;
return 0;
}
快慢指针
登录后发布评论
暂无评论,来抢沙发