zoukankan      html  css  js  c++  java
  • Python 实现栈与队列

    #基于Python2.7

    #基于顺序表实现

    #发现用Python写题时,没有像写C++时方便的STL可用,不过查阅资料之后发现用class实现也很简洁,不过效率应该不是很高

    Python实现栈并使用:

     1 class SStack():
     2     def __init__(self):
     3         self._elems=[]
     4     def is_empty(self):
     5         return self._elems==[]
     6     def top(self):
     7         #if self._elems==[]:
     8         #    raise StackUnderflow("in SStack.top()")
     9         return self._elems[-1]
    10     def push(self,e):
    11         self._elems.append(e)
    12     def pop(self):
    13         #if self._elems==[]:
    14         #    raise StackUnderflow("in SStack.pop()")
    15         return self._elems.pop()
    16 S=SStack()
    17 for i in range(3):
    18     S.push(i)
    19 while not S.is_empty():
    20     temp=S.top()
    21     print temp
    22     S.pop()

    Python实现队列并使用:

     1 class SQueue():  
     2     def __init__(self,init_len=8):
     3         self._len=init_len
     4         self._elems=[0]*init_len
     5         self._head=0
     6         self._num=0
     7     def is_empty(self):
     8         return self._num==0
     9     def peek(self):
    10         #if self._num==0:
    11         #    raise QueueUnderflow
    12         return self._elems[self._head]
    13     def dequeue(self):
    14         #if self._num==0:
    15         #    raise QueueUnderflow
    16         e=self._elems[self._head]
    17         self._head=(self._head+1)%self._len
    18         self._num-=1
    19         return e
    20     def enqueue(self,e):
    21         if self._num==self._len:
    22             self.__extend()
    23         self._elems[(self._head+self._num)%self._len]=e
    24         self._num+=1
    25     def __extend(self):
    26         old._len=self._len
    27         self._len*=2
    28         new_elems=[0]*self._len
    29         for i in range(old_len):
    30             new_elems[i]=self._elems[(self._head+i)%old_len]
    31         self._elems,self._head=new_elems,0
    32 Q=SQueue()
    33 for i in range(5):
    34     Q.enqueue(i)
    35 while not Q.is_empty():
    36     print Q.dequeue()
    37     Q.peek()
  • 相关阅读:
    Ddr2,ddr3,ddr4内存条的读写速率
    Ddr2,ddr3,ddr4内存条的读写速率
    【VS开发】获取CPU tick tick 周期
    【VS开发】获取CPU tick tick 周期
    【VS开发】malloc申请内存错误分析
    【VS开发】malloc申请内存错误分析
    【VS开发】Return与Exit的区别
    【VS开发】Return与Exit的区别
    【VS开发】C/C++预编译命令
    【VS开发】C/C++预编译命令
  • 原文地址:https://www.cnblogs.com/cnXuYang/p/7151118.html
Copyright © 2011-2022 走看看