آرایه چندبعدی مجموعهای از دادهها است که در بیش از یک بعد سازماندهی شدهاند. برای مثال، یک آرایه دوبعدی مانند یک ماتریس یا جدول داده است که در سطرها و ستونها ذخیره میشود.
int[,] grades = {
{ 18, 17, 19 }, // نمرات دانشآموز اول
{ 15, 14, 16 }, // نمرات دانشآموز دوم
{ 20, 19, 18 } // نمرات دانشآموز سوم
};
// دسترسی به نمره دانشآموز دوم در درس سوم
Console.WriteLine(grades[1, 2]); // خروجی: 16
✅ توضیح: اینجا یک آرایه دوبعدی تعریف کردیم که هر سطر نمایندهی یک دانشآموز و هر ستون نمایندهی یک درس است. مقدار grades[1,2]
یعنی مقدار سطر دوم و ستون سوم که برابر 16 است.
در لیست پیوندی یکطرفه، هر گره (Node) شامل دو بخش است:
class Node {
public int data;
public Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
class LinkedList {
public Node head;
public void Add(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
}
public void Print() {
Node current = head;
while (current != null) {
Console.Write(current.data + " -> ");
current = current.next;
}
Console.WriteLine("null");
}
}
// استفاده از لیست پیوندی
LinkedList list = new LinkedList();
list.Add(10);
list.Add(20);
list.Add(30);
list.Print(); // خروجی: 10 -> 20 -> 30 -> null
پشته یک ساختار دادهای است که از اصل آخرین ورودی، اولین خروجی (LIFO) پیروی میکند. یعنی آخرین چیزی که اضافه شده است، اولین چیزی است که حذف میشود.
Stack browserHistory = new Stack();
// باز کردن صفحات جدید
browserHistory.Push("google.com");
browserHistory.Push("github.com");
browserHistory.Push("arshialearn.ir");
// برگشت به صفحه قبلی
Console.WriteLine("Back to: " + browserHistory.Pop()); // خروجی: arshialearn.ir
Console.WriteLine("Back to: " + browserHistory.Pop()); // خروجی: github.com
صف یک ساختار دادهای است که از اصل اولین ورودی، اولین خروجی (FIFO) پیروی میکند. یعنی اولین چیزی که اضافه شده است، اولین چیزی است که خارج میشود.
Queue bankQueue = new Queue();
// افراد در صف بانک منتظر هستند
bankQueue.Enqueue("علی");
bankQueue.Enqueue("مریم");
bankQueue.Enqueue("حسین");
// خدمتدهی به اولین نفر
Console.WriteLine("Now serving: " + bankQueue.Dequeue()); // خروجی: علی
Console.WriteLine("Now serving: " + bankQueue.Dequeue()); // خروجی: مریم
درخت جستجوی دودویی (BST) یک درخت است که در آن:
این ویژگی باعث میشود که عملیات جستجو سریع انجام شود.
class BSTNode {
public int Value;
public BSTNode Left, Right;
public BSTNode(int value) {
Value = value;
Left = Right = null;
}
}
class BinarySearchTree {
public BSTNode Root;
public void Insert(int value) {
Root = InsertRec(Root, value);
}
private BSTNode InsertRec(BSTNode root, int value) {
if (root == null) return new BSTNode(value);
if (value < root.Value) root.Left = InsertRec(root.Left, value);
else if (value > root.Value) root.Right = InsertRec(root.Right, value);
return root;
}
}
// استفاده از درخت جستجو
BinarySearchTree tree = new BinarySearchTree();
tree.Insert(50);
tree.Insert(30);
tree.Insert(70);
tree.Insert(20);
tree.Insert(40);
tree.Insert(60);
tree.Insert(80);
آرایه چندبعدی چیست و چه کاربردهایی دارد؟
آرایه چندبعدی یعنی آرایهای که در بیش از یک بعد سازماندهی میشود. مثلا یک ماتریس که دادهها در ردیفها و ستونها قرار میگیرند. از آرایههای چندبعدی در مواردی مثل ذخیرهسازی تصاویر یا جداول بزرگ استفاده میشود.
int[,] matrix = { {1, 2, 3}, // اولین سطر {4, 5, 6} // دومین سطر }; Console.WriteLine(matrix[0, 2]);
تفاوت لیست پیوندی یکطرفه با آرایهها در چیست؟
لیست پیوندی یکطرفه با آرایه فرق داره چون توی آرایهها دادهها به ترتیب در یک مکان ثابت ذخیره میشن، ولی در لیست پیوندی، هر گره به گره بعدی اشاره داره و اندازهاش متغیر هست.
class Node { public int data; // داده ذخیره شده در گره public Node next; // اشارهگر به گره بعدی }
اصول کارکرد پشته (LIFO) را توضیح دهید
پشته یعنی آخرین ورودی، اولین خروجی. آخرین چیزی که وارد میشه، اول بیرون میاد! مثل زمانی که توی مرورگر دکمه برگشت رو میزنیم، به آخرین صفحهای که دیدیم برمیگردیم.
Stack stack = new Stack(); stack.Push("page1"); stack.Push("page2"); Console.WriteLine(stack.Pop());
فرق صف (FIFO) با پشته چیست و در چه مواردی از هرکدام استفاده میشود؟
در صف، اولین ورودی، اولین خروجیه (FIFO). به عنوان مثال، صف بانک. پشته برای ذخیرهسازی تاریخچه یا عملیات بازگشتی مناسبه.
Queue queue = new Queue(); queue.Enqueue("Ali"); queue.Enqueue("Maryam"); Console.WriteLine(queue.Dequeue());
درخت جستجوی دودویی چیست و چه ویژگیهایی دارد؟
درخت جستجوی دودویی یک درخت خاصه که گرههای سمت چپ کوچکتر از والدش و گرههای سمت راست بزرگتر از والدش هستند. این ویژگیها کمک میکنن که جستجو سریعتر بشه.
class BSTNode { public int Value; // مقدار گره public BSTNode Left, Right; // اشارهگرهای گرههای چپ و راست }
چگونه میتوان یک لیست پیوندی را معکوس کرد؟
برای معکوس کردن لیست، باید اشارهگرها رو طوری تغییر بدیم که هر گره به گره قبلی اشاره کنه به جای گره بعدی. اینطوری ترتیب گرهها معکوس میشه.
یک الگوریتم جستجو در درخت جستجوی دودویی بنویسید
برای جستجو در درخت جستجوی دودویی، به هر گره نگاه میکنیم و بررسی میکنیم که آیا مقدار مورد نظر در سمت چپ یا راست گره فعلی قرار داره.
public BSTNode Search(BSTNode root, int value) { if (root == null || root.Value == value) return root; if (value < root.Value) return Search(root.Left, value); return Search(root.Right, value); }
چگونه پشته را پیادهسازی میکنید و چه کاربردهایی برای آن میشناسید؟
پشته رو میشه با استفاده از لیست پیوندی یا آرایه پیادهسازی کرد. کاربردهای اون شامل ذخیرهسازی تاریخچه مرورگر و مدیریت کارهای بازگشتی هست.
بعد از ثبت نام در این دوره و تایید فاکتور لینک های دانلود برای شما فعال خواهد شد
نظرات کاربران