Pokusavam da napravim red cekanja sa LIFO baferom koriscenjem dvostruko ulancane liste
Code:
class BufferNode
{
public Package info;
public BufferNode next, prev;
public BufferNode(Package el)
{
info = el;
next = null;
prev = null;
}
}
class Buffer
{
BufferNode head = new BufferNode();
BufferNode tail = new BufferNode();
//double intime, outtime, timeinbuffer, numpacket;
public Buffer()
{
head = tail = null;
}
/// <summary>
/// Vreme ulaska u bafer
/// </summary>
/// <param name="it">vrednost vremena</param>
public void SetInTime(double it)
{
}
/// <summary>
/// Proverava da li je bafer prazan i vraca bool vrednost
/// </summary>
/// <returns></returns>
public bool isEmpty()
{
return head == null;
}
/// <summary>
/// Nalazi i vraca duzinu bafera
/// </summary>
/// <returns>Duzina bafera</returns>
public int BufferLength()
{
int length = 0;
BufferNode tmp = new BufferNode();
for (tmp = head; tmp != null; tmp = tmp.next)
{
length++;
}
return length;
}
/// <summary>
/// Dodavanje novog paketa u bafer
/// </summary>
/// <param name="x">Cvor bafera koji se dodaje</param>
public void AddToBuffer(BufferNode x)
{
if (!isEmpty())
{
/*x.prev = tail;
x.next = null;
tail.next.prev = x;
tail.next = x;
*/
tail.next = x;
x.prev = tail;
x.next = null;
tail = x;
}
else
head = tail = x;
}
/// <summary>
/// Brisanje Paketa sa repa bafera
/// </summary>
public void DeleteFromTail()
{
if (!isEmpty())
{
if (head == tail)
head = tail = null;
else
{
tail = tail.prev;
tail.next = null;
}
}
else
return;
}
/// <summary>
/// Uzima elemenat koji treba proslediti programu
/// </summary>
/// <returns></returns>
public BufferNode TakeFromBuffer()
{
BufferNode x=new BufferNode();
x = tail;
DeleteFromTail();
return x;
}
}
class BufferNode
{
public Package info;
public BufferNode next, prev;
public BufferNode(Package el)
{
info = el;
next = null;
prev = null;
}
}
class Buffer
{
BufferNode head = new BufferNode();
BufferNode tail = new BufferNode();
//double intime, outtime, timeinbuffer, numpacket;
public Buffer()
{
head = tail = null;
}
/// <summary>
/// Vreme ulaska u bafer
/// </summary>
/// <param name="it">vrednost vremena</param>
public void SetInTime(double it)
{
}
/// <summary>
/// Proverava da li je bafer prazan i vraca bool vrednost
/// </summary>
/// <returns></returns>
public bool isEmpty()
{
return head == null;
}
/// <summary>
/// Nalazi i vraca duzinu bafera
/// </summary>
/// <returns>Duzina bafera</returns>
public int BufferLength()
{
int length = 0;
BufferNode tmp = new BufferNode();
for (tmp = head; tmp != null; tmp = tmp.next)
{
length++;
}
return length;
}
/// <summary>
/// Dodavanje novog paketa u bafer
/// </summary>
/// <param name="x">Cvor bafera koji se dodaje</param>
public void AddToBuffer(BufferNode x)
{
if (!isEmpty())
{
/*x.prev = tail;
x.next = null;
tail.next.prev = x;
tail.next = x;
*/
tail.next = x;
x.prev = tail;
x.next = null;
tail = x;
}
else
head = tail = x;
}
/// <summary>
/// Brisanje Paketa sa repa bafera
/// </summary>
public void DeleteFromTail()
{
if (!isEmpty())
{
if (head == tail)
head = tail = null;
else
{
tail = tail.prev;
tail.next = null;
}
}
else
return;
}
/// <summary>
/// Uzima elemenat koji treba proslediti programu
/// </summary>
/// <returns></returns>
public BufferNode TakeFromBuffer()
{
BufferNode x=new BufferNode();
x = tail;
DeleteFromTail();
return x;
}
}
Da li moze to da radi bez onog default konstruktora BufferNode() ?
Ja kad pokusam da kreiram instancu te kalse javlja mi gresku "Error 5 No overload for method 'BufferNode' takes '0' arguments"
Koja je fora? I koja je razlika ako ubacim i onaj konstruktor?