Како изградити структуре података помоћу ЈаваСцрипт ЕС6 класа

Како изградити структуре података помоћу ЈаваСцрипт ЕС6 класа

Структуре података су основни аспект рачунарства и програмирања, без обзира на језик који користите. Њихово темељно познавање може вам помоћи да ефикасно организујете, управљате, складиштите и мењате податке. Идентификовање одговарајуће структуре података за ваш случај коришћења може побољшати перформансе са великом разликом.





Међутим, ЈаваСцрипт подразумевано долази само са примитивним структурама података, као што су низови и објекти. Али са увођењем класа ЕЦМАСцрипт 6 (ЕС6), сада можете да креирате прилагођене структуре података као што су стекови и редови уз помоћ примитивних структура података.





где могу јефтино да поправим екран свог иПхоне -а

Структура података о стеку

Структура података гомиле вам омогућава да гурате нове податке преко постојећих података на начин ЛИФО (последњи улаз, први излаз). Ову линеарну структуру података је лако визуализовати помоћу једноставног примера. Замислите гомилу тањира на столу. Можете додати или уклонити плочу само са врха снопа.





Ево како можете имплементирати структуру података стека користећи ЈаваСцрипт низове и ЕС6 класе :

class Stack {
constructor() {
this.data = [];
this.top = -1;
}
}

Хајде да истражимо и изградимо неке од операција које можете извести на стеку.



Пусх операција

Пусх операција се користи за уметање нових података у стек. Морате проследити податке као параметар док позивате пусх метод. Пре уметања података, горњи показивач стека се увећава за један, а нови подаци се убацују на горњу позицију.

push(data) {
this.top++;
this.data[this.top] = data;
return this.data;
}

Поп Операција

Операција искакања користи се за уклањање горњег елемента података у стеку. Током извођења ове операције горњи показивач се смањује за 1.





pop() {
if (this.top <0) return undefined;
const poppedTop = this.data[this.top];
this.top--;
return poppedTop;
}

Пеек Оператион

Операција завиривања се користи за враћање вредности присутне на врху стека. Временска сложеност за преузимање ових података је О (1).

Сазнајте више: Шта је Биг-О нотација?





peek() {
return this.top >= 0 ? this.data[this.top] : undefined;
}

Структура података повезане листе

Повезана листа је линеарна структура података која се састоји од бројних чворова међусобно повезаних помоћу показивача. Сваки чвор на листи садржи податке и променљиву показивача која указује на следећи чвор на листи.

Сазнајте више: Увод у смернице за програмере

За разлику од хрпе, имплементације повезане листе у ЈаваСцрипт -у захтевају две класе. Прва класа је Ноде класе за креирање чвора, а друга класа је ЛинкедЛист цласс да изврши све операције на повезаној листи. Показивач главе показује на први чвор повезане листе, а репни показивач на последњи чвор повезане листе.

class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
this.tail = null;
this.size = 0;
}
}

Ево неких примарних операција које можете извршити на повезаној листи:

Операција додавања

Операција додавања користи се за додавање новог чвора на крај повезане листе. Морате проследити податке као параметар за уметање новог чвора. Прво, креирајте нови објекат чвора користећи Нова кључна реч у ЈаваСцрипт -у.

Ако је повезана листа празна, и показивач главе и репа ће показати на нови чвор. У супротном ће само показивач репа показати на нови чвор.

append(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
this.size++;
return this;
}

Операција уметања

Да бисте уметнули нови чвор у одређени индекс, можете користити операцију уметања. Ова метода узима два параметра: податке за уметање и индекс у који их треба уметнути. У најгорем случају, ова метода има временску сложеност О (Н) јер ће можда морати да пређе целу листу.

insert(data, index) {
if (index this.size) return undefined;
if (index === 0) {
this.head = new Node(data, this.head);
!this.tail ? (this.tail = this.head) : null;
this.size++;
return this;
}
if (index === this.size) return this.append(data);
let count = 0;
let beforeNode = this.head;
while (count !== index) {
beforeNode = beforeNode.next;
count++;
}
const newNode = new Node(data);
let afterNode = beforeNode.next;
newNode.next = afterNode;
beforeNode.next = newNode;
this.size++;
return this;
}

Операција брисања

Операција брисања пролази кроз повезану листу да би добила референцу на чвор који треба избрисати и уклања везу претходног чвора. Слично операцији уметања, операција брисања такође има временску сложеност О (Н) у најгорем случају.

deleteNode(index) {
if (index === 0) {
const removedHead = this.head;
this.head = this.head.next;
this.size--;
this.size === 0 ? (this.tail = null) : null;
return removedHead;
}
if (index === this.size - 1) {
if (!this.head) return undefined;
let currentNode = this.head;
let newTail = currentNode;
while (currentNode.next) {
newTail = currentNode;
currentNode = currentNode.next;
}
this.tail = newTail;
this.tail.next = null;
this.size--;
this.size === 0 ? ([this.head, this.tail] = [null, null]) : null;
return currentNode;
}
if (index this.size - 1) return undefined;
let count = 0;
let beforeNode = this.head;
while (count !== index - 1) {
beforeNode = beforeNode.next;
count++;
}
const removedNode = beforeNode.next;
let afterNode = removedNode.next;
beforeNode.next = afterNode;
removedNode.next = null;
this.size--;
return removedNode;
}

Структура података о реду чекања

Структура података о реду је слична гомили људи који стоје у реду. Особа која прва уђе у ред послужује се пре других. Слично, ова линеарна структура података прати приступ ФИФО (први улаз, први излаз) за уметање и уклањање података. Ова структура података може се поново створити у ЈаваСцрипт -у помоћу повезане листе на овај начин:

class Queue {
constructor() {
this.front = null;
this.rear = null;
this.size = 0;
}
}

Ево како можете да уметнете и уклоните податке из реда у ЈаваСцрипт -у:

бесплатне пуне верзије веб локација за преузимање софтвера

Операција чекања

Операција енкуеуе убацује нове податке у ред. Приликом позивања ове методе, ако је структура података у реду празна, предњи и задњи показивач показују на ново уметнути чвор у реду. Ако ред није празан, нови чвор се додаје на крај листе и задњи показивач показује на овај чвор.

enqueue(data) {
const newNode = new Node(data);
if (!this.front) {
this.front = newNode;
this.rear = newNode;
} else {
this.rear.next = newNode;
this.rear = newNode;
}
this.size++;
return this;
}

Операција чекања

Операција декуеуе уклања први елемент у реду. Током операције одлагања, показивач главе се помера напред до другог чвора на листи. Овај други чвор сада постаје глава реда.

dequeue() {
if (!this.front) return undefined;
if (this.front === this.rear) this.rear = null;
const dequeuedNode = this.front;
this.front = this.front.next;
this.size--;
return dequeuedNode;
}

Следећи корак након структуре података

Структуре података могу бити тежак концепт за разумевање, посебно ако сте тек почели да програмирате. Али, као и свака друга вештина, вежба вам може помоћи да заиста разумете и цените ефикасност коју пружа за складиштење и управљање подацима у вашим апликацијама.

Алгоритми су једнако корисни као и структуре података и могли би постати сљедећи логичан корак на вашем програмирању. Па, зашто не бисте започели са алгоритмом сортирања као што је сортирање по облачићима?

Објави Објави Твеет Емаил Увод у алгоритам сортирања мехурића

Алгоритам сортирања мехурића: одличан увод у сортирање низова.

Прочитајте следеће
Повезане теме
  • Програмирање
  • ЈаваСцрипт
  • Програмирање
  • Кодирање Туториали
О аутору Нитин Ранганатх(Објављен 31 чланак)

Нитин је страствени програмер софтвера и студент рачунарског инжењеринга који развија веб апликације користећи ЈаваСцрипт технологије. Ради као слободни веб програмер и воли да пише за Линук и програмирање у слободно време.

Још од Нитин Ранганатх

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили