c#堆栈的实现
using System;
using System.Collections.Generic;
using System.Text;
namespace 数据结构
{
public class stack
{
private Node first = null;
public bool Empty
{
get
{
return (first == null);
}
}
//从栈顶取出数据区的数据
public object Pop()
{
if (first == null)
throw new Exception("不能从空栈栈顶中取出对象";
else
{
object temp = first.Value;
first = first.Next;
return temp;
}
}
//向栈顶压入一个节点对象
public void Push(object o)
{
first = new Node(o, first);
}
//定义一个节点对象
class Node
{
//定义指向节点对象的对象(相当与一个指针),用于指向下一个节点
public Node Next;
public object Value;//定义一个基值类型,可以用来接受任何类型的值
//定义接受包含1个值参数的构造器,它引用有两个参数构造器的构造方法,并且自动将第2个参数付为空值
public Node(object value): this(value, null)
{
}
//定义包含2个参数的构造器,一个参数是基值类型,一个是指向接点类型的对象
public Node(object value, Node next)
{
Next = next;
Value = value;
}
}//end class Node
}//end class stact
class Test
{
static void Main()
{
stack s = new stack();
for (int i = 0; i < 10; i++)
s.Push(i);
//s = null;
System.Console.WriteLine(s.Pop().ToString());
}
}
}
using System.Collections.Generic;
using System.Text;
namespace 数据结构
{
public class stack
{
private Node first = null;
public bool Empty
{
get
{
return (first == null);
}
}
//从栈顶取出数据区的数据
public object Pop()
{
if (first == null)
throw new Exception("不能从空栈栈顶中取出对象";
else
{
object temp = first.Value;
first = first.Next;
return temp;
}
}
//向栈顶压入一个节点对象
public void Push(object o)
{
first = new Node(o, first);
}
//定义一个节点对象
class Node
{
//定义指向节点对象的对象(相当与一个指针),用于指向下一个节点
public Node Next;
public object Value;//定义一个基值类型,可以用来接受任何类型的值
//定义接受包含1个值参数的构造器,它引用有两个参数构造器的构造方法,并且自动将第2个参数付为空值
public Node(object value): this(value, null)
{
}
//定义包含2个参数的构造器,一个参数是基值类型,一个是指向接点类型的对象
public Node(object value, Node next)
{
Next = next;
Value = value;
}
}//end class Node
}//end class stact
class Test
{
static void Main()
{
stack s = new stack();
for (int i = 0; i < 10; i++)
s.Push(i);
//s = null;
System.Console.WriteLine(s.Pop().ToString());
}
}
}