私は正しい専門用語を使用したいと思います。 私は一本鎖のリストを作った。単一のチェーンリストを逆順にリスト
class MyStack
{
public Node Initial { get; set; }
public MyStack()
{
Initial = null;
}
public void Push(int data)
{
var node = new Node { Data = data, Next = Initial };
Initial = node;
}
public int Pop()
{
int res = Initial.Data;
Initial = Initial.Next;
return res;
}
public int Sum()
{
int sum = 0;
Node currentNode = Initial;
while (currentNode != null)
{
sum += currentNode.Data;
currentNode = currentNode.Next;
}
return sum;
}
public int Count()
{
int count = 0;
Node currentNode = Initial;
while (currentNode != null)
{
count++;
currentNode = currentNode.Next;
}
return count;
}
public void PrintAll()
{
Node currentNode = Initial;
while(currentNode != null)
{
Console.WriteLine("tmp.Data = " + currentNode.Data);
currentNode = currentNode.Next;
}
}
}
public class Node
{
public int Data;
public Node Next;
}
あなたはこのような何かを行うことができます意味:
var s = new MyStack();
s.Push(5);
s.Push(3);
s.Push(7);
s.PrintAll();
Console.WriteLine("Sum: " + s.Sum());
Console.WriteLine("Count: " + s.Count());
は今、私が試してみて、逆の方法を作りたいです。これは動作しているようです:
public void Reverse()
{
Node predesesor, location;
location = Initial;
predesesor = null;
while(Initial != null)
{
Initial = Initial.Next;
location.Next = predesesor;
predesesor = location;
location = Initial;
}
Initial = predesesor;
}
私はそれがどのように動作するかはほとんど分かりません。維持するのは難しいでしょう。 それは他の何よりもハックのようです。
助けてもらえますか?
ところで、プッシュしないでポップしようとするとどうなりますか?そこに小切手を置くことができます。 – erelender
ええ、私は知っている:)これはもっと個人的な練習なので、これらのことがどのように機能するかについて、より深い知識をアーカイブすることができます。 プロダクションコードで使用するものではありません:) – CasperT