스택
8503 단어 algorithmsgocomputerscience
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. 많은 사람들이 쌓아야 하는 거짓된 일입니다.
Reference
이 문제에 관하여(스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/stack-2men
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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. 많은 사람들이 쌓아야 하는 거짓된 일입니다.
Reference
이 문제에 관하여(스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/stack-2men
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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. 많은 사람들이 쌓아야 하는 거짓된 일입니다.
Reference
이 문제에 관하여(스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/stack-2men
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vapordev/stack-2men텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)