>웹 프론트엔드 >JS 튜토리얼 >JavaScript 데이터 구조 및 알고리즘 스택을 간략하게 이해합니다.

JavaScript 데이터 구조 및 알고리즘 스택을 간략하게 이해합니다.

WBOY
WBOY앞으로
2022-06-13 17:48:451637검색

이 글은 javascript에 대한 관련 지식을 제공하며, 프로세스 지향 소스 코드로 스택 작성, 객체 지향 메서드로 소스 코드 작성 등 스택과 관련된 문제를 주로 소개합니다. 다음은 살펴보겠습니다. 그것이 모두에게 도움이 되기를 바랍니다.

JavaScript 데이터 구조 및 알고리즘 스택을 간략하게 이해합니다.

【관련 추천: javascript video tutorial, web front-end

1. 스택 알아보기

stack: (스택)을 스택이라고도 합니다. , 작업 개체가 제한된 선형 테이블입니다. 후입선출(LIFO)을 따르세요

Top of stack: 삽입 및 삭제 작업을 테이블 끝,

스택 하단까지만 제한하는 선형 테이블 : 삭제 작업을 위해 테이블 ​​헤드 및 선형 테이블로만 삽입을 제한합니다.

Push: 스택에 새 요소를 삽입하는 것을 밀기, 밀기 또는 밀기라고도 합니다. 이는 새 요소를 스택의 최상위 요소 위에 올려 새로운 최상위 요소로 만드는 것입니다.

Pop: 스택에서 요소를 삭제하는 것은 스택의 최상위 요소를 삭제하고 인접한 요소를 스택의 새로운 최상위 요소로 만듭니다

2. 프로세스 지향 방법 소스 코드 작성 스택


2.1 사고

프로세스 지향이란 무엇입니까?

프로세스 지향이란 문제를 해결하기 위한 단계를 분석하고 함수를 사용하여 이를 구현하는 것

을 의미합니다. 단계별로

통화를 실행하면 그는 가도 좋습니다.

2.2 구현 방법

  1. push(element)스택 상단에 하나 이상의 요소 추가
  2. pop()스택 상단의 요소 삭제
  3. peek()스택의 맨 위에 있는 요소를 반환합니다
  4. isEmpty()는 스택이 비어 있는지 확인하는 데 사용됩니다.
  5. clear()는 스택을 지우는 데 사용됩니다. Element
  6. size()는 스택에 있는 요소의 개수를 반환하는 데 사용됩니다.
구현하기 전에 어떻게 구현하는지 생각해 봅시다. it

먼저 이를 구현하기 위해 배열 메소드를 차용하므로

빈 배열을 사용하여 스택

2.3 소스 코드 구현을 시뮬레이션하고 클래스

를 호출하여 클래스를 빌드하고, 이를 시뮬레이션하기 위한 배열,

클래스에 다양한 메소드를 작성하고

부분적으로 배열 메소드를 호출합니다.

일반적으로 클래스를 사용하여

스택 시뮬레이션을 구현하는 배열 메소드를 래핑하는 것입니다

class Stack {
   constructor() {
       this.item = []
         }
   push(element) {
        this.item.push(element)
               }
   pop() {
      return this.item.pop()
          }
   peek() {
       return this.item[this.item.length - 1]
            }
   isEmpty() {
       return this.item.length === 0
            }
   clear() {
         this.item = []
   size() {
          return this.item.length
            }
        }
//实例化Stack类
const stack = new Stack()
stack.push(4)
stack.push(6)
console.log( stack.pop())
console.log(stack.peek())
console.log(stack.isEmpty())
console.log(stack.size())
실행 결과:

3. 객체 지향 메소드 소스 코드를 사용하여 작성

3.1 Thinking

객체 지향: 은 문제를 구성하는 것들을 여러 객체로 분해하는 것입니다.

, 객체를 설정하는 것은 특정 단계를 완료하는 것이 아니라 무언가를 해결하는 방법을 설명하는 것입니다.

문제 프로세스의

behavior


3.2需要实现的方法

  1. push(element)添加一个或多个元素到栈顶
  2. pop()删除钱顶的元素,并返回移除的元素
  3. peek()返回栈顶的元素
  4. isEmpty()用于判断栈是否为空,空则为空
  5. clear()用于清空栈的元素
  6. size()用于返回栈中元素的个数
  7. toString()用于将栈以字符串的形式打印

那么在实现这个类,我们用对象来模拟栈


3.3源码及使用类

class Stack {
   constructor() {
      this.count=0
      this.items = {}
            }
   push(element) {
      this.items[this.count]=element
      this.count++
            }
    pop() {
       if(this.isEmpty()){
           return undefined
          }
       this.count--
       const result=this.items[this.count]
       delete this.items[this.count]
       return result
            }
    peek() {
          if(this.isEmpty()){
               return undefined
               }
         return this.items[this.count-1]
            }
    isEmpty() {
         return this.count===0
            }
    clear() {
        this.items={}
        this.count=0
          }
    size() {
       return this.count
           }
    toString(){
       if(this.isEmpty()){
        return undefined
               }
         let objectString=`${this.items[0]}`
          for(let i=1;i<this.count;i++){
               objectString=`${objectString},${this.items[i]}`
               }
         return objectString
            }
        }

  const stack = new Stack()
  stack.push(23)
  stack.push(34)
  stack.push(80)
  console.log( stack.pop())
  console.log(stack.peek())
  console.log(stack.isEmpty())
  console.log(stack.size())
  console.log(stack.toString())

在使用对象来模拟栈时,采用了键:值的方式 

来存储数据,比如this.items[this.count]=element

在这个结构中用this.count来记录栈的大小,

当我们向里面插入一个数字时,就分配count为键

插入的值为值。这个时候就需要将this.count++.

关于pop()与peek(),toString()方法都需要

先判断栈是否为空,如果为空则返回undefined。

【相关推荐:javascript视频教程web前端

위 내용은 JavaScript 데이터 구조 및 알고리즘 스택을 간략하게 이해합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제