스택

Uma Stack é a esttrutura de "último a entrar,primeiro a sair"(last in last out), na qual os itens são adicionados a partir do topo. 분석기 및 분석기 알고리즘을 사용하여 스택으로 사용합니다. 푸시, 팝, 상단 e는 스택에 따라 크기가 조정됩니다. 구문 분석, 스택 podem ser usadas로 gerenciamento de memória de compilação são alguns cenários da vida real onde 역추적.

Nesse exemplo usando a dinâmica de um 웹 브라우저 vamos implementationar o que seria o seistema de avançar e voltar nas paginas.

Como o ultimo item a entrar é o primeiro a sair significa que vamos gurdar URL's em uma pilha e cada vez que quisermos voltar para a página anterior seria como uma função de pop para retirar da stack, o atuali.ulti.

예:

Eu 방문 "구글, 페이스북, 트위터 e 유튜브". Então tenho uma lista onde a posição 0 é o Google e a ultima osição é o Youtube, o que seria como a URL atual e também o ultimo item que entrou na stack.

Então se eu quiser voltar navegação do browser significa que essa Operação contecerá:

브라우저.팝

E o estado atual da lista seria "Google, Facebook, Twitter"

데이터



A struct de página contem os dados das páginas como o nome que aparece do header da aba e o caminho relativo.
Com a struct de stack definimos o que seria a esttrutura onde as paginas são armazenadas e de onde podem ser feitas as operações.

type pagina struct {
    nome string
    url  string
}

type stack struct {
    slice []pagina
}


푸시 방식



O método avançar que é uma Representativeação do push adiciona uma nova página no topo da stack. O exemplo é muito simples e é praticamente o mesmo padrão usado para queues quando usamos slices.

func (navegador *stack) avancar(home pagina) {

    navegador.slice = append(navegador.slice, home)
}


비어 있는



현재와 ​​같은 방식으로 검토할 수 있습니다.

func (navegador *stack) vazia() bool {

    return navegador.slice == nil
}


팝 방식



O método voltar na Implementação da stack remove a última página do slice, esse seria analogo ao pop.

Para isso usamos a mesma operação de slice que também foi feita quando usamos queues, porém aqui retiramos os itens desde a posição 0 até o tamanho do slice - 1, mesmo falando que eu quero fatiar ação 슬라이스 0,1,2,3".

Também fazemos uma checagem usando o método vazio para saber se a lista contem intens antes de utilizar o pop.

func (navegador *stack) voltar() bool {

    if navegador.vazia() {
        return false
    }

    tamanho := len(navegador.slice) - 1
    navegador.slice = navegador.slice[:tamanho]

    return true
}


주요 방법



Aqui instaciamos as páginas como o histórico acessado e a nossa stack como nagevador chrome.
이테란도 소브레 OS에 대한 Depois tem um for itens no historyo fazendo push dos itens do historyo no chrome. Como se estivessemos acessando as páginas uma depois da outra.
Vem então a chamada do pop que retira o ultimo item e fazemos o print do estado atual da stack.

func main() {

    historico := []pagina{
        {"GeeksforGeeks", "https://www.geeksforgeeks.org/"},
        {"Youtube", "https://www.youtube.com/"},
        {"Github", "https://github.com/"},
        {"Twitter", "https://twitter.com/home"},
    }

    var chrome *stack = new(stack)

    for i := range historico {
        chrome.avancar(historico[i])
    }

    fmt.Println(chrome)
    chrome.voltar()
    fmt.Println(chrome)

    fmt.Println(chrome.vazia())

}


산출:

&{[{GeeksforGeeks https://www.geeksforgeeks.org/} {Youtube https://www.youtube.com/} {Github https://github.com/} {Twitter https://twitter.com/home}]}

&{[{GeeksforGeeks https://www.geeksforgeeks.org/} {Youtube https://www.youtube.com/} {Github https://github.com/}]}

false


Aprimeira stack com todos os itens e a segunda depois da operação de pop e em seguida a chamada de vazio para ver o estado da stack. 많은 사람들이 쌓아야 하는 거짓된 일입니다.

좋은 웹페이지 즐겨찾기