ارشد نرمافزار و توسعهدهنده React و Next.js🚀 | طراحی سایتهای مدرن و کاربرپسند | ارتباط با من zil.ink/seyedahmaddev
معرفی و آموزش هفت ساختار داده کلیدی در برنامهنویسی
ساختارهای داده یکی از بخشهای اساسی در علوم کامپیوتر هستند که برای سازماندهی و مدیریت دادهها مورد استفاده قرار میگیرند. این مقاله به معرفی هفت ساختار داده مهم شامل آرایهها، لیستهای پیوندی، هَش مَپ ها، پشتهها، صفها، درختها و گرافها میپردازد. همچنین در این مقاله برخی از مفاهیم با استفاده از مثالهای تایپ اسکریپت توضیح داده میشوند.

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"] }
کاربرد:
مسیریابی
مدلسازی شبکهها
ساختارهای داده مانند ابزارهایی هستند که در پروژههای نرمافزاری استفاده میکنید. با درک کاربردها و پیادهسازی هر ساختار داده، میتوانید کدنویسی بهینهتری داشته باشید. تمرین این ساختارها با استفاده از زبانهایی مانند تایپاسکریپت، درک عمیقتری از آنها فراهم میکند.
مطلبی دیگر در همین موضوع
کار با پرینترهای چاپ فاکتور فروش (رسید - فیش) بصورت تحت وب
مطلبی دیگر در همین موضوع
آموزش گام به گام پایتون - قسمت صفر
بر اساس علایق شما
[روان شات¹][Ravan shot]100عکس!