class CDLL
{
private CDLL prev, next; // not null, except in deleted elements
public CPoint val; // A new CDLL node is a one-element circular list
public CDLL(CPoint val)
{
this.val = val; next = prev = this;
} public CDLL Prev
{
get { return prev; }
} public CDLL Next
{
get { return next; }
} // Delete: adjust the remaining elements, make this one point nowhere
public void Delete()
{
next.prev = prev; prev.next = next;
next = prev = null;
} public CDLL Prepend(CDLL elt)
{
elt.next = this; elt.prev = prev; prev.next = elt; prev = elt;
return elt;
} public CDLL Append(CDLL elt)
{
elt.prev = this; elt.next = next; next.prev = elt; next = elt;
return elt;
} public int Size()
{
int count = 0;
CDLL node = this;
do
{
count++;
node = node.next;
} while (node != this);
return count;
} public void PrintFwd()
{
CDLL node = this;
do
{
Console.WriteLine(node.val);
node = node.next;
} while (node != this);
Console.WriteLine();
} public void CopyInto(CPoint[] vals, int i)
{
CDLL node = this;
do
{
vals[i++] = node.val; // still, implicit checkcasts at runtime
node = node.next;
} while (node != this);
}
}
{
private CDLL prev, next; // not null, except in deleted elements
public CPoint val; // A new CDLL node is a one-element circular list
public CDLL(CPoint val)
{
this.val = val; next = prev = this;
} public CDLL Prev
{
get { return prev; }
} public CDLL Next
{
get { return next; }
} // Delete: adjust the remaining elements, make this one point nowhere
public void Delete()
{
next.prev = prev; prev.next = next;
next = prev = null;
} public CDLL Prepend(CDLL elt)
{
elt.next = this; elt.prev = prev; prev.next = elt; prev = elt;
return elt;
} public CDLL Append(CDLL elt)
{
elt.prev = this; elt.next = next; next.prev = elt; next = elt;
return elt;
} public int Size()
{
int count = 0;
CDLL node = this;
do
{
count++;
node = node.next;
} while (node != this);
return count;
} public void PrintFwd()
{
CDLL node = this;
do
{
Console.WriteLine(node.val);
node = node.next;
} while (node != this);
Console.WriteLine();
} public void CopyInto(CPoint[] vals, int i)
{
CDLL node = this;
do
{
vals[i++] = node.val; // still, implicit checkcasts at runtime
node = node.next;
} while (node != this);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货