<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net%2FData_Structure%2FStack_Yours</id>
		<title>VB.Net/Data Structure/Stack Yours - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net%2FData_Structure%2FStack_Yours"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/Data_Structure/Stack_Yours&amp;action=history"/>
		<updated>2026-04-05T19:15:11Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net/Data_Structure/Stack_Yours&amp;diff=986&amp;oldid=prev</id>
		<title> в 16:40, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/Data_Structure/Stack_Yours&amp;diff=986&amp;oldid=prev"/>
				<updated>2010-05-26T16:40: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;Версия 16:40, 26 мая 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://www.vbex.ru/index.php?title=VB.Net/Data_Structure/Stack_Yours&amp;diff=987&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/Data_Structure/Stack_Yours&amp;diff=987&amp;oldid=prev"/>
				<updated>2010-05-26T12:45:40Z</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;==Our Stack based on our List==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;&lt;br /&gt;
Imports System&lt;br /&gt;
Public Class MainClass&lt;br /&gt;
  Public Shared Sub Main()&lt;br /&gt;
      Dim stack As Stack = New Stack()&lt;br /&gt;
      Dim aBoolean As Boolean = True&lt;br /&gt;
      Dim aCharacter As Char = Convert.ToChar(&amp;quot;$&amp;quot;)&lt;br /&gt;
      Dim anInteger As Integer = 34&lt;br /&gt;
      Dim aString As String = &amp;quot;www.vbex.ru&amp;quot;&lt;br /&gt;
      stack.Push(aBoolean)&lt;br /&gt;
      Console.WriteLine(stack)&lt;br /&gt;
      stack.Push(aCharacter)&lt;br /&gt;
      Console.WriteLine(stack)&lt;br /&gt;
      stack.Push(anInteger) &lt;br /&gt;
      Console.WriteLine(stack)&lt;br /&gt;
      stack.Push(aString)&lt;br /&gt;
      Console.WriteLine(stack)&lt;br /&gt;
      Dim removedObject As Object = Nothing&lt;br /&gt;
      Try&lt;br /&gt;
         While True&lt;br /&gt;
            removedObject = stack.Pop()&lt;br /&gt;
            Console.WriteLine(removedObject &amp;amp; &amp;quot; popped&amp;quot;)&lt;br /&gt;
            Console.WriteLine(stack)&lt;br /&gt;
         End While&lt;br /&gt;
      Catch emptyListException As EmptyListException&lt;br /&gt;
         Console.Error.WriteLine(emptyListException.StackTrace)&lt;br /&gt;
      End Try&lt;br /&gt;
  End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
Public Class Stack&lt;br /&gt;
   Inherits List&lt;br /&gt;
   Public Sub New()&lt;br /&gt;
      MyBase.New(&amp;quot;stack&amp;quot;)&lt;br /&gt;
   End Sub &amp;quot; New&lt;br /&gt;
   Public Sub Push(ByVal dataValue As Object)&lt;br /&gt;
      MyBase.InsertAtFront(dataValue)&lt;br /&gt;
   End Sub &amp;quot; Push&lt;br /&gt;
   Public Function Pop() As Object&lt;br /&gt;
      Return MyBase.RemoveFromFront()&lt;br /&gt;
   End Function &lt;br /&gt;
End Class &lt;br /&gt;
&lt;br /&gt;
Public Class List&lt;br /&gt;
   Private firstNode As ListNode&lt;br /&gt;
   Private lastNode As ListNode&lt;br /&gt;
   Private name As String&lt;br /&gt;
   Public Sub New(ByVal listName As String)&lt;br /&gt;
      name = listName&lt;br /&gt;
      firstNode = Nothing&lt;br /&gt;
      lastNode = Nothing&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public Sub New()&lt;br /&gt;
      MyClass.New(&amp;quot;list&amp;quot;)&lt;br /&gt;
   End Sub &lt;br /&gt;
   Public Sub InsertAtFront(ByVal insertItem As Object)&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         If IsEmpty() Then&lt;br /&gt;
            lastNode = New ListNode(insertItem)&lt;br /&gt;
            firstNode = lastNode&lt;br /&gt;
         Else &lt;br /&gt;
            firstNode = New ListNode(insertItem, firstNode)&lt;br /&gt;
         End If&lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public Sub InsertAtBack(ByVal insertItem As Object)&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         If IsEmpty() Then&lt;br /&gt;
            lastNode = New ListNode(insertItem)&lt;br /&gt;
            firstNode = lastNode&lt;br /&gt;
         Else &lt;br /&gt;
            lastNode.NextNode = New ListNode(insertItem)&lt;br /&gt;
            lastNode = lastNode.NextNode&lt;br /&gt;
         End If&lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public Function RemoveFromFront() As Object&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         Dim removeItem As Object = Nothing&lt;br /&gt;
         If IsEmpty() Then&lt;br /&gt;
            Throw New EmptyListException(name)&lt;br /&gt;
         End If&lt;br /&gt;
         removeItem = firstNode.Data &lt;br /&gt;
         If firstNode Is lastNode Then&lt;br /&gt;
            firstNode = Nothing&lt;br /&gt;
            lastNode = Nothing&lt;br /&gt;
         Else&lt;br /&gt;
            firstNode = firstNode.NextNode&lt;br /&gt;
         End If&lt;br /&gt;
         &lt;br /&gt;
         Return removeItem&lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Function&lt;br /&gt;
   Public Function RemoveFromBack() As Object&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         Dim removeItem As Object = Nothing&lt;br /&gt;
         If IsEmpty() Then&lt;br /&gt;
            Throw New EmptyListException(name)&lt;br /&gt;
         End If&lt;br /&gt;
         removeItem = lastNode.Data&lt;br /&gt;
         If firstNode Is lastNode Then&lt;br /&gt;
            lastNode = Nothing&lt;br /&gt;
            firstNode = lastNode&lt;br /&gt;
         Else&lt;br /&gt;
            Dim current As ListNode = firstNode&lt;br /&gt;
            While (Not (current.NextNode Is lastNode))&lt;br /&gt;
               current = current.NextNode&lt;br /&gt;
            End While&lt;br /&gt;
            lastNode = current&lt;br /&gt;
            current.NextNode = Nothing&lt;br /&gt;
         End If&lt;br /&gt;
         Return removeItem&lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Function&lt;br /&gt;
   Public Function IsEmpty() As Boolean&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         If firstNode Is Nothing Then&lt;br /&gt;
            Return True&lt;br /&gt;
         Else&lt;br /&gt;
            Return False&lt;br /&gt;
         End If&lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Function&lt;br /&gt;
   Public Overrides Function ToString() As String&lt;br /&gt;
      Dim str As String = New String(&amp;quot;&amp;quot;)&lt;br /&gt;
      SyncLock (Me)&lt;br /&gt;
         If IsEmpty() Then&lt;br /&gt;
            Return &amp;quot;Empty &amp;quot; &amp;amp; name&lt;br /&gt;
         End If&lt;br /&gt;
         str = &amp;quot;The &amp;quot; &amp;amp; name &amp;amp; &amp;quot; is: &amp;quot;&lt;br /&gt;
         Dim current As ListNode = firstNode&lt;br /&gt;
         While Not current Is Nothing&lt;br /&gt;
            str += current.Data &amp;amp; &amp;quot; &amp;quot;&lt;br /&gt;
            current = current.NextNode&lt;br /&gt;
         End While&lt;br /&gt;
         &lt;br /&gt;
         Return str&lt;br /&gt;
      &lt;br /&gt;
      End SyncLock&lt;br /&gt;
   End Function&lt;br /&gt;
End Class &lt;br /&gt;
&lt;br /&gt;
Public Class ListNode&lt;br /&gt;
   Private mData As Object&lt;br /&gt;
   Private mNextNode As ListNode&lt;br /&gt;
   Public Sub New(ByVal dataValue As Object)&lt;br /&gt;
      MyClass.New(dataValue, Nothing)&lt;br /&gt;
   End Sub &lt;br /&gt;
   Public Sub New(ByVal dataValue As Object, _&lt;br /&gt;
      ByVal nextNodeValue As Object)&lt;br /&gt;
      mData = dataValue&lt;br /&gt;
      mNextNode = nextNodeValue&lt;br /&gt;
   End Sub &lt;br /&gt;
   Public ReadOnly Property Data() As Object&lt;br /&gt;
      Get&lt;br /&gt;
         Return mData&lt;br /&gt;
      End Get&lt;br /&gt;
   End Property&lt;br /&gt;
   Public Property NextNode() As ListNode&lt;br /&gt;
      Get&lt;br /&gt;
         Return mNextNode&lt;br /&gt;
      End Get&lt;br /&gt;
      Set(ByVal value As ListNode)&lt;br /&gt;
         mNextNode = value&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
Public Class EmptyListException&lt;br /&gt;
   Inherits ApplicationException&lt;br /&gt;
   Public Sub New(ByVal name As String)&lt;br /&gt;
      MyBase.New(&amp;quot;The &amp;quot; &amp;amp; name &amp;amp; &amp;quot; is empty&amp;quot;)&lt;br /&gt;
   End Sub &lt;br /&gt;
End Class &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>