1.自定义结构
class MyNode<T>
{
private MyNode<T> next;
private T data;
public MyNode()
{
next = null;
data = default(T);
}
public MyNode(T data)
{
this.data = data;
this.next = null;
}
public MyNode(MyNode<T> next)
{
this.next = next;
this.data = default(T);
}
public MyNode(MyNode<T> next, T data)
{
this.data = data;
this.next = next;
}
public T Data { get { return data; }set { data = value; } }
public MyNode<T> Next { get { return next; }set { next = value; } }
2.使用自定义结构实现接口
public class MyStackLinkList<T> : IStack<T>
{
private MyNode<T> head;
int count = 0;
public MyStackLinkList()
{
head =null;
count = 0;
}
public int GetLength()
{
return count;
}
public T Peek()
{
if (head != null)
{
MyNode<T> temp = head;
while (true)
{
if (temp.Next != null)
{
temp= temp.Next;
}
else
{
return temp.Data;
}
}
}
else
{
return default(T);
}
}
public T Pop()
{
MyNode<T> preNode;
T data;
if (head != null)
{
MyNode<T> temp = head;
while (true)
{
if (temp.Next != null)
{
if (temp.Next.Next == null)
{
data = temp.Next.Data;
preNode = temp;
preNode.Next = null;
count--;
return data;
}
temp = temp.Next;
}
else
{
data = temp.Data;
head = null;
count--;
return data;
}
}
}
else
{
Console.WriteLine("已经没有了");
return default(T);
}
}
public void Push(T item)
{
MyNode<T> newNode=new MyNode<T>(item);
if (head == null)
{
head = newNode;
}
else
{
MyNode<T> temp= head;
while (true)
{
if (temp.Next != null)
{
temp = temp.Next;
}
else
{
temp.Next = newNode;
break;
}
}
}
count++;
}
}