سیداحمد
سیداحمد
خواندن ۳ دقیقه·۵ روز پیش

معرفی و آموزش هفت ساختار داده کلیدی در برنامه‌نویسی

ساختارهای داده یکی از بخش‌های اساسی در علوم کامپیوتر هستند که برای سازمان‌دهی و مدیریت داده‌ها مورد استفاده قرار می‌گیرند. این مقاله به معرفی هفت ساختار داده مهم شامل آرایه‌ها، لیست‌های پیوندی، هَش‌ مَپ‌ ها، پشته‌ها، صف‌ها، درخت‌ها و گراف‌ها می‌پردازد. همچنین در این مقاله برخی از مفاهیم با استفاده از مثال‌های تایپ‌ اسکریپت توضیح داده می‌شوند.

---

1. آرایه‌ها (Arrays)

تعریف: آرایه‌ها مجموعه‌ای از عناصر هستند که به ترتیب در حافظه قرار می‌گیرند و هر عنصر از طریق یک اندیس دسترسی‌پذیر است.

مثال در تایپ‌اسکریپت:


const numbers: number[] = [10, 20, 30, 40];

console.log(numbers[1]); // خروجی: 20

numbers.push(50); // افزودن عنصر

console.log(numbers); // خروجی: [10, 20, 30, 40, 50]


کاربرد:

ذخیره داده‌های متوالی

دسترسی سریع به عناصر با اندیس

---

2. لیست‌های پیوندی (Linked Lists)

تعریف: لیست‌های پیوندی مجموعه‌ای از گره‌ها هستند که هر گره شامل داده و اشاره‌گر به گره بعدی است.

ساختار در تایپ‌اسکریپت:


class Node {

value: number;

next: Node | null = null;

constructor(value: number) {

this.value = value;

}

}


class LinkedList {

head: Node | null = null;


add(value: number): void {

const newNode = new Node(value);

if (!this.head) {

this.head = newNode;

} else {

let current = this.head;

while (current.next) {

current = current.next;

}

current.next = newNode;

}

}


print(): void {

let current = this.head;

while (current) {

console.log(current.value);

current = current.next;

}

}

}


const list = new LinkedList();

list.add(10);

list.add(20);

list.add(30);

list.print(); // خروجی: 10, 20, 30


کاربرد:

درج و حذف سریع

ذخیره داده‌های پویا

---

3. هش‌مپ‌ها (Hash Maps)

تعریف: هش‌مپ‌ها ساختارهایی برای ذخیره و دسترسی سریع به داده‌ها با استفاده از کلید هستند.

مثال در تایپ‌اسکریپت:


const hashMap: { [key: string]: number } = {};

hashMap["a"] = 1;

hashMap["b"] = 2;


console.log(hashMap["a"]); // خروجی: 1

delete hashMap["b"];

console.log(hashMap); // خروجی: { "a": 1 }


کاربرد:

ذخیره داده‌های کلید-مقدار

جستجوی سریع

---

4. پشته‌ها (Stacks)

تعریف: پشته‌ها از اصل آخرین ورودی، اولین خروجی (LIFO) پیروی می‌کنند.

مثال در تایپ‌اسکریپت:


class Stack<T> {

private items: T[] = [];


push(item: T): void {

this.items.push(item);

}


pop(): T | undefined {

return this.items.pop();

}


peek(): T | undefined {

return this.items[this.items.length - 1];

}

}


const stack = new Stack<number>();

stack.push(10);

stack.push(20);

console.log(stack.peek()); // خروجی: 20

console.log(stack.pop()); // خروجی: 20

console.log(stack.pop()); // خروجی: 10


کاربرد:

بازگشت از توابع

مدیریت حافظه

---

5. صف‌ها (Queues)

تعریف: صف‌ها از اصل اولین ورودی، اولین خروجی (FIFO) پیروی می‌کنند.

مثال در تایپ‌اسکریپت:


class Queue<T> {

private items: T[] = [];


enqueue(item: T): void {

this.items.push(item);

}


dequeue(): T | undefined {

return this.items.shift();

}


front(): T | undefined {

return this.items[0];

}

}


const queue = new Queue<number>();

queue.enqueue(10);

queue.enqueue(20);

console.log(queue.front()); // خروجی: 10

console.log(queue.dequeue()); // خروجی: 10

console.log(queue.dequeue()); // خروجی: 20


کاربرد:

صف‌های پردازش

مدیریت منابع

---

6. درخت‌ها (Trees)

تعریف: درخت‌ها ساختارهای سلسله‌مراتبی هستند که از گره‌هایی تشکیل شده‌اند.

ساختار ساده در تایپ‌اسکریپت:


class TreeNode {

value: number;

left: TreeNode | null = null;

right: TreeNode | null = null;


constructor(value: number) {

this.value = value;

}

}


const root = new TreeNode(10);

root.left = new TreeNode(5);

root.right = new TreeNode(15);


console.log(root); // ساختار درختی


کاربرد:

جستجوهای سریع

مدیریت سلسله مراتب داده‌ها

---

7. گراف‌ها (Graphs)

تعریف: گراف‌ها مجموعه‌ای از گره‌ها (راس‌ها) هستند که از طریق لبه‌ها به هم متصل می‌شوند.

ساختار پایه در تایپ‌اسکریپت:


class Graph {

adjacencyList: { [key: string]: string[] } = {};


addVertex(vertex: string): void {

if (!this.adjacencyList[vertex]) {

this.adjacencyList[vertex] = [];

}

}


addEdge(vertex1: string, vertex2: string): void {

this.adjacencyList[vertex1].push(vertex2);

this.adjacencyList[vertex2].push(vertex1);

}


showGraph(): void {

console.log(this.adjacencyList);

}

}


const graph = new Graph();

graph.addVertex("A");

graph.addVertex("B");

graph.addEdge("A", "B");

graph.showGraph(); // خروجی: { A: ["B"], B: ["A"] }


کاربرد:

مسیریابی

مدل‌سازی شبکه‌ها

---

نتیجه‌گیری

ساختارهای داده مانند ابزارهایی هستند که در پروژه‌های نرم‌افزاری استفاده می‌کنید. با درک کاربردها و پیاده‌سازی هر ساختار داده، می‌توانید کدنویسی بهینه‌تری داشته باشید. تمرین این ساختارها با استفاده از زبان‌هایی مانند تایپ‌اسکریپت، درک عمیق‌تری از آن‌ها فراهم می‌کند.



علوم کامپیوترتایپ اسکریپتالگوریتم
امیدوارم به بهتر شدن کمک کنم. در تلگرام و اینستاگرام پیام بفرست، SeyedAhmaddv - ارشد نرم افزار، توسعه دهنده ری اکت و نکست
شاید از این پست‌ها خوشتان بیاید