yasercomeng
پنج شنبه 03 مرداد 1387, 03:27 صبح
سلام .كد زير از نظر ويژوال استديو مشكل دارد من تويه كتابه Apress هم خوندم گفته كه يه همچين كاري رو نمي شه تويه ويژوال استديو 2008 انجام داد پس من چه طور مي تونم اين كلاس رو داشته باشم؟
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace MyProgram
{
class MinHeap<Item> : IEnumerable<Item>
{
//property
int Size;
int Current;
List<Item> Heap;
//methods
bool IsEmpty()
{
if (this.Current == 0)
return true;
return false;
}
bool IsFull()
{
if (this.Current == this.Size)
return true;
return false;
}
public bool Insert(Item InsertionVar)
{
if (IsFull())
return false;
this.Current++;
int i = 0;
for (i = this.Current; true; )
{
if (i == 1)
break;
if (InsertionVar >= this.Heap[i / 2])
break;
this.Heap[i] = this.Heap[i / 2];
i /= 2;
}
this.Heap[i] = InsertionVar;
return true;
}
public Item Export()
{
if (IsEmpty())
return default(Item);
Item FirstVal = this.Heap[1];
Item k = this.Heap[this.Current];
this.Current--;
int i = 1, j = 2;
for (;j <= this.Current; )
{
if (j < this.Current)
if (this.Heap[j] > this.Heap[j + 1])
j++;
if (k <= this.Heap[j])
break;
this.Heap[i] = this.Heap[j];
i = j; j *= 2;
}
this.Heap[i] = k;
return FirstVal;
}
//constructor
public MinHeap()
{
this.Size = 0;
this.Current = 0;
this.Heap = null;
}
MinHeap(int Size)
{
this.Size = Size;
this.Current = 0;
this.Heap = new List<Item>(Size + 1);
for (int i = 0; i <= this.Size; i++)
this.Heap[i] = default(Item);
}
//derived methods
IEnumerator<Item> IEnumerable<Item>.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace MyProgram
{
class MinHeap<Item> : IEnumerable<Item>
{
//property
int Size;
int Current;
List<Item> Heap;
//methods
bool IsEmpty()
{
if (this.Current == 0)
return true;
return false;
}
bool IsFull()
{
if (this.Current == this.Size)
return true;
return false;
}
public bool Insert(Item InsertionVar)
{
if (IsFull())
return false;
this.Current++;
int i = 0;
for (i = this.Current; true; )
{
if (i == 1)
break;
if (InsertionVar >= this.Heap[i / 2])
break;
this.Heap[i] = this.Heap[i / 2];
i /= 2;
}
this.Heap[i] = InsertionVar;
return true;
}
public Item Export()
{
if (IsEmpty())
return default(Item);
Item FirstVal = this.Heap[1];
Item k = this.Heap[this.Current];
this.Current--;
int i = 1, j = 2;
for (;j <= this.Current; )
{
if (j < this.Current)
if (this.Heap[j] > this.Heap[j + 1])
j++;
if (k <= this.Heap[j])
break;
this.Heap[i] = this.Heap[j];
i = j; j *= 2;
}
this.Heap[i] = k;
return FirstVal;
}
//constructor
public MinHeap()
{
this.Size = 0;
this.Current = 0;
this.Heap = null;
}
MinHeap(int Size)
{
this.Size = Size;
this.Current = 0;
this.Heap = new List<Item>(Size + 1);
for (int i = 0; i <= this.Size; i++)
this.Heap[i] = default(Item);
}
//derived methods
IEnumerator<Item> IEnumerable<Item>.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
}
}