A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FList%2Fyour_list</id>
		<title>C++/List/your list - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FList%2Fyour_list"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/List/your_list&amp;action=history"/>
		<updated>2026-04-17T01:01:30Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/List/your_list&amp;diff=1841&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/List/your_list&amp;diff=1841&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/List/your_list&amp;diff=1842&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/List/your_list&amp;diff=1842&amp;oldid=prev"/>
				<updated>2010-05-25T10:28:00Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Your own list==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cassert&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class List;&lt;br /&gt;
class Iterator;&lt;br /&gt;
class Node&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
   Node(string s);&lt;br /&gt;
private:&lt;br /&gt;
   string data;&lt;br /&gt;
   Node* previous;&lt;br /&gt;
   Node* next;&lt;br /&gt;
friend class List;&lt;br /&gt;
friend class Iterator;&lt;br /&gt;
};&lt;br /&gt;
class List&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
   List();&lt;br /&gt;
   void push_back(string s);&lt;br /&gt;
   void insert(Iterator iter, string s);&lt;br /&gt;
   Iterator erase(Iterator i);&lt;br /&gt;
   Iterator begin();&lt;br /&gt;
   Iterator end();&lt;br /&gt;
private:&lt;br /&gt;
   Node* first;&lt;br /&gt;
   Node* last;&lt;br /&gt;
};&lt;br /&gt;
class Iterator&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
   Iterator();&lt;br /&gt;
   string get() const;&lt;br /&gt;
   void next();&lt;br /&gt;
   void previous();&lt;br /&gt;
   bool equals(Iterator b) const;&lt;br /&gt;
private:&lt;br /&gt;
   Node* position;&lt;br /&gt;
   Node* last;&lt;br /&gt;
friend class List;&lt;br /&gt;
};&lt;br /&gt;
Node::Node(string s)&lt;br /&gt;
{  &lt;br /&gt;
   data = s;&lt;br /&gt;
   previous = NULL;&lt;br /&gt;
   next = NULL;&lt;br /&gt;
}&lt;br /&gt;
List::List()&lt;br /&gt;
{  &lt;br /&gt;
   first = NULL;&lt;br /&gt;
   last = NULL;&lt;br /&gt;
}&lt;br /&gt;
void List::push_back(string s)&lt;br /&gt;
{  &lt;br /&gt;
   Node* newnode = new Node(s);&lt;br /&gt;
   if (last == NULL) &lt;br /&gt;
   {  &lt;br /&gt;
      first = newnode;&lt;br /&gt;
      last = newnode;&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {  &lt;br /&gt;
      newnode-&amp;gt;previous = last;&lt;br /&gt;
      last-&amp;gt;next = newnode;&lt;br /&gt;
      last = newnode;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
void List::insert(Iterator iter, string s)&lt;br /&gt;
{  &lt;br /&gt;
   if (iter.position == NULL)&lt;br /&gt;
   {  &lt;br /&gt;
      push_back(s);&lt;br /&gt;
      return;&lt;br /&gt;
   }&lt;br /&gt;
   Node* after = iter.position;&lt;br /&gt;
   Node* before = after-&amp;gt;previous;&lt;br /&gt;
   Node* newnode = new Node(s);&lt;br /&gt;
   newnode-&amp;gt;previous = before;&lt;br /&gt;
   newnode-&amp;gt;next = after;&lt;br /&gt;
   after-&amp;gt;previous = newnode;&lt;br /&gt;
   if (before == NULL) &lt;br /&gt;
      first = newnode;&lt;br /&gt;
   else&lt;br /&gt;
      before-&amp;gt;next = newnode;&lt;br /&gt;
}&lt;br /&gt;
Iterator List::erase(Iterator i)&lt;br /&gt;
{  &lt;br /&gt;
   Iterator iter = i;&lt;br /&gt;
   assert(iter.position != NULL);&lt;br /&gt;
   Node* remove = iter.position;&lt;br /&gt;
   Node* before = remove-&amp;gt;previous;&lt;br /&gt;
   Node* after = remove-&amp;gt;next;&lt;br /&gt;
   if (remove == first)&lt;br /&gt;
      first = after;&lt;br /&gt;
   else&lt;br /&gt;
      before-&amp;gt;next = after;&lt;br /&gt;
   if (remove == last)&lt;br /&gt;
      last = before;&lt;br /&gt;
   else&lt;br /&gt;
      after-&amp;gt;previous = before;&lt;br /&gt;
   iter.position = after;&lt;br /&gt;
   delete remove;&lt;br /&gt;
   return iter;&lt;br /&gt;
}&lt;br /&gt;
Iterator List::begin()&lt;br /&gt;
{  &lt;br /&gt;
   Iterator iter;&lt;br /&gt;
   iter.position = first;&lt;br /&gt;
   iter.last = last;&lt;br /&gt;
   return iter;&lt;br /&gt;
}&lt;br /&gt;
Iterator List::end()&lt;br /&gt;
{  &lt;br /&gt;
   Iterator iter;&lt;br /&gt;
   iter.position = NULL;&lt;br /&gt;
   iter.last = last;&lt;br /&gt;
   return iter;&lt;br /&gt;
}&lt;br /&gt;
Iterator::Iterator()&lt;br /&gt;
{  &lt;br /&gt;
   position = NULL;&lt;br /&gt;
   last = NULL;&lt;br /&gt;
}&lt;br /&gt;
string Iterator::get() const&lt;br /&gt;
{  &lt;br /&gt;
   assert(position != NULL);&lt;br /&gt;
   return position-&amp;gt;data;&lt;br /&gt;
}&lt;br /&gt;
void Iterator::next()&lt;br /&gt;
{  &lt;br /&gt;
   assert(position != NULL);&lt;br /&gt;
   position = position-&amp;gt;next;&lt;br /&gt;
}&lt;br /&gt;
void Iterator::previous()&lt;br /&gt;
{  &lt;br /&gt;
   if (position == NULL)&lt;br /&gt;
      position = last;&lt;br /&gt;
   else &lt;br /&gt;
      position = position-&amp;gt;previous;&lt;br /&gt;
   assert(position != NULL);&lt;br /&gt;
}&lt;br /&gt;
bool Iterator::equals(Iterator b) const&lt;br /&gt;
{  &lt;br /&gt;
   return position == b.position;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{  &lt;br /&gt;
   List staff;&lt;br /&gt;
   staff.push_back(&amp;quot;A&amp;quot;);&lt;br /&gt;
   staff.push_back(&amp;quot;B&amp;quot;);&lt;br /&gt;
   staff.push_back(&amp;quot;C&amp;quot;);&lt;br /&gt;
   staff.push_back(&amp;quot;D&amp;quot;);&lt;br /&gt;
   Iterator pos;&lt;br /&gt;
   pos = staff.begin();&lt;br /&gt;
   pos.next();&lt;br /&gt;
   pos.next();&lt;br /&gt;
   pos.next();&lt;br /&gt;
   staff.insert(pos, &amp;quot;Reindeer, Rudolf&amp;quot;);&lt;br /&gt;
   pos = staff.begin();&lt;br /&gt;
   pos.next();&lt;br /&gt;
   staff.erase(pos);&lt;br /&gt;
   for (pos = staff.begin(); !pos.equals(staff.end()); pos.next())&lt;br /&gt;
      cout &amp;lt;&amp;lt; pos.get() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>