文章

49

粉丝

49

获赞

8

访问

11.0k

头像
击鼓传花 题解:图解题目意思
P1018 贵州大学机试题
发布于2024年3月10日 15:01
阅读数 391

1 2 3 4 5

1 2 3 4 5

1 2 4 5

1 2 4 5

1 2 4 

1 2 4

1 4

1 4

4

用list写一个循环链表

#include <iostream>
#include <list>
using namespace std;

int main()
{
	{
		int  n;
		cin >> n;
		list<int>l;
		list<int>::iterator it;
		for (int i = 1; i < n + 1; i++)
		{
			l.push_back(i);
		};
		it = l.begin();
		for (int i = 0; i < n - 1; i++)
		{
			if (++it == l.end())
			{
				it = l.begin();
			}
			if (++it == l.end())
			{
				it = l.begin();
			}
			l.erase(it++);
			if (it == l.end())
			{
				it = l.begin();
			}
		}
		cout << l.front() << endl;
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

2 条评论
Cookie‘s AE86
2024年3月16日 10:00

请问删除迭代器所指链表元素后,迭代器还是指向当前存储地址吗

vector的迭代器所指元素被删除后,迭代器所指的存储地址会存放下一个元素吗(后面的元素都前移)

赞(0)

光明守护神 : 回复 Cookie‘s AE86: 是的。 删除导致失效。 原因:erase()执行完,后面的元素会自动往前移,如果此时再人为移动(即i++),那么一下移动了两次,将导致有一些不该存在的元素仍然存在

2024年3月16日 22:12