如何使用Go實現乙個Stack和Queue

2021-09-10 03:18:06 字數 408 閱讀 6863

可以使用 slice 實現如下:

type stack  int

func (s stack) empty() bool

func (s *stack) push(v int)

func (s *stack)pop() int

type queue int

func (q queue) empty() bool

func (q *queue) enqueue(v int)

func (q *queue) dequeue() int

上面的寫法是正確的,但是不是最優的。

可以思考下,使用乙個值來計數,標識stack棧頂的位置,而不需要大量的記憶體變動。同樣,也可以用go的標準庫 container/list 來實現

如何寫乙個Stack?

1.棧是陣列 2.先進後出 3.出棧 4.入棧 手寫乙個雙向鍊錶 棧 public class stackpopandpush public stackpopandpush int lens 返回元素個數 public intsize 返回陣列長度,容量,棧資料長 private intcapaci...

如何使用乙個陣列實現乙個佇列呢?

下文是筆者講述使用陣列實現佇列效果的方法分享,如下所示 實現思路 設定乙個startindex和curindex及size三個變數,即可使用陣列實現乙個佇列效果,如下所示 package com.j a265.algorithm 使用陣列實現乙個佇列效果,佇列先進先出 public class ar...

用兩個棧(Stack)實現乙個佇列(Queue)

兩年前從網上看到一道面試題 用兩個棧 stack 實現乙個佇列 queue 覺得不錯,就經常拿來面試,幾年下來,做此題的應該有幾十人了。通過對面試者的表現和反應,有一些統計和感受,在此做個小結。用c 描述,題目大致是這樣的 已知下面stack類及其3個方法push pop和count,請用2個sta...