1. 数据结构与算法:堆栈

2018-06-05  本文已影响0人  sszhang

堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行。

Stack()创建堆栈
push(item)向栈顶插入项
pop() 返回栈顶的项,并从堆栈中删除该项
clear() 清空堆栈
empty() 判断堆栈是否为空
size() 返回堆栈中项的个数
top() 返回栈顶的项

stack.png
Class Stack():
  def __init__(self):
    self.items =[]

  def push(self, item):
    self.items.append(item)

  def pop(self):
    self.items.pop()

  def clear(self):
    del self.items[:]

  def empty(self):
    return self.size()==0

  def size(self):
    return len(self.items)

  def top(self):
    return self.items[self.size()-1]

十进制转二进制 是一个应用堆栈的典型案例。十进制转二进制 采用“除2取余,逆序排列”的方法,如图所示:


stack_application.png
def divideBy2(decNumber):
  remstack = Stack()

  while decNumber > 0:
    rem = decNum %2
    remstack.push(rem)
    decNumber  = decNumber //2

  binString = ' '
  while not remstack.empty()
    binString = binString + str(remstack.pop())
    return binString

if __name__ == '__main__':
  print(divideBy2(43))
上一篇 下一篇

猜你喜欢

热点阅读