PDA

View Full Version : استفاده از درختهای عمومی در #c



innocent_maill
سه شنبه 22 مرداد 1387, 20:21 عصر
من می خوام از درختهای عمومی در سی شارپ استفاده کنم. هر نود درخت دارای سه اشاره گر هست. لطفا در مورد کد راهنمايي کنيد. البته کد برنامه رو به زبان سی ++ نوشتم
ولی نمی دونم چطوری به سی شارپ تبديلش کنم. هر نود درخت دارای چنین ساختاری
: هست

class node{
friend class tree;
int data;
node *link1;
node *link2;
node *link3;
};

class tree{
public:
tree();
void addnode();

void display(node *,int,int,int);
void visit(node *,int *,int);
void replace(int,int);
node* copytree(node *);
void deletetree(node *);
private:
node *root;
};

innocent_maill
سه شنبه 22 مرداد 1387, 20:28 عصر
من می خوام از درختهای عمومی در سی شارپ استفاده کنم. هر نود درخت دارای سه اشاره گر هست. لطفا در مورد کد راهنمايي کنيد. البته کد برنامه رو به زبان سی ++ نوشتم
ولی نمی دونم چطوری به سی شارپ تبديلش کنم. هر نود درخت دارای چنین ساختاری هست :

class node{
friendclass tree;
int data;
node *link1;
node *link2;
node *link3;
};

class tree{
public:
tree();
void addnode();

void display(node *,int,int,int);
void visit(node *,int *,int);
void replace(int,int);
node* copytree(node *);
void deletetree(node *);
private:
node *root;
};

Amir Oveisi
سه شنبه 22 مرداد 1387, 22:25 عصر
شما به جای اشاره گر از reference ه استفاد مب کنین تو #C

class Node
{
private State currentState;
private int depth;
private int cost;
private Activity lastActivity;
private Node parent;
List<Node> children;

public void AddChild(Node child)
{
this.children.Add(child);
}
}
بعنوان مثال این یک درخته که هر node شامل 5 فیلده.

innocent_maill
جمعه 25 مرداد 1387, 08:43 صبح
ممنون از پاسخ تون.
من از اين درخت می خوام برای ژنتيک پروگرميننگ برای هوش مصنوعی استفاده کنم.به همين دليل بايد بتونم زير درختهای تصادفی از دو درخت رو برای انجام عمل بازترکيبی باهم تعويض کنم. نمی دونم با استفاده از reference ها اين کار رو می شه انجام داد یا نه؟
اگر لطف کنيد با struct يا class و استفاده از اشاره گرها توضيح بدين ممنون می شم.

innocent_maill
شنبه 26 مرداد 1387, 01:13 صبح
من اين کلاس رو به اين شکل تعريف کردم ولی خطا می گیره:
unsafe class Node
{
public int data;
public Node* link1;
public Node* link2;
public Node* link3;
}

خطایی که می گیره این هست:
Cannot take the address of, get the size of, or declare a pointer to a managed type ("program.Node)"

mehdi.mousavi
شنبه 26 مرداد 1387, 14:33 عصر
من اين کلاس رو به اين شکل تعريف کردم ولی خطا می گیره:
unsafeclassNode
{
publicint data;
publicNode* link1;
publicNode* link2;
publicNode* link3;
}

خطایی که می گیره این هست:
Cannot take the address of, get the size of, or declare a pointer to a managed type ("program.Node)"



سلام.
من توصیه میکنم از Mixed Mode Code ها خودداری کنید، اونم برای همچین چیز ساده ای. چون تو runtime بر اساس چگونگی اجرای برنامه، ممکنه مدام یه گذر از Managed Runtime به Native Runtime داشته باشید که این باعث افت سرعت برنامه میشه.

Scott Mitchel مقاله ای تو MSDN (http://msdn.microsoft.com/en-us/library/ms379572%28VS.80%29.aspx)نوشته که نحوه نوشتن یه Binary Tree (بهمراه Search و ...) رو در C# نشون میده. توصیه میکنم ابتدا به کد ایشون مراجعه کنید، سپس بر مبنای این کد کلاسهای مورد نظرتون رو بسازید.

innocent_maill
یک شنبه 27 مرداد 1387, 19:46 عصر
ممنون از راهنمايي شما.
من به اين لینک مراجعه می کنم اگر بازهم اشکالی داشتم سوال می کنم. ولی کاش می شد با استفاده از اشاره گرها هم این سوال منو پاسخ می دادین.