xml地图|网站地图|网站标签 [设为首页] [加入收藏]

python算法入门,Python算法之栈

来源:http://www.ccidsi.com 作者:最新解决方案 人气:58 发布时间:2020-01-05
摘要:Python算法之栈(stack)的完成,pythonstack 正文以实例格局展示了Python算法中栈(stack)的达成,对于学习数据布局域算法有分明的参阅借鉴价值。具体内容如下: 1.栈stack平常的操作:

Python算法之栈(stack)的完成,pythonstack

正文以实例格局展示了Python算法中栈(stack)的达成,对于学习数据布局域算法有分明的参阅借鉴价值。具体内容如下:

1.栈stack平常的操作:

Stack(State of Qatar 营造多个空的栈对象
push(卡塔尔(قطر‎ 把二个因素增添到栈的最顶层
pop(卡塔尔(قطر‎ 删除栈最顶层的因素,并重临那几个成分
peek(卡塔尔  重回最顶层的因素,并不删除它
isEmpty(卡塔尔国  推断栈是还是不是为空
size(卡塔尔  重回栈6月素的个数

2.轻巧易行案例以致操作结果:

Stack Operation      Stack Contents   Return Value
 s.isEmpty()   []        True
 s.push(4)   [4] 
 s.push('dog')   [4,'dog'] 
 s.peek()   [4,'dog']    'dog'
 s.push(True)   [4,'dog',True] 
 s.size()   [4,'dog',True]   3
 s.isEmpty()   [4,'dog',True]   False
 s.push(8.4)   [4,'dog',True,8.4] 
 s.pop()       [4,'dog',True]   8.4
 s.pop()       [4,'dog']     True
 s.size()   [4,'dog']     2

此地运用python的list对象模拟栈的得以达成,具体代码如下:

#coding:utf8
class Stack:
  """模拟栈"""
  def __init__(self):
    self.items = []

  def isEmpty(self):
    return len(self.items)==0 

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

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

  def peek(self):
    if not self.isEmpty():
      return self.items[len(self.items)-1]

  def size(self):
    return len(self.items) 
s=Stack()
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())

感兴趣的读者能够入手测验一下本文所述实例代码,相信会对大家学习Python能有一定的收获。

#coding:utf8
class Stack:
    """模拟栈"""
    def __init__(self):
        self.items = []
       
    def isEmpty(self):
        return len(self.items)==0
   
    def push(self, item):
        self.items.append(item)
   
    def pop(self):
        return self.items.pop()
   
    def peek(self):
        if not self.isEmpty():
            return self.items[len(self.items)-1]
       
    def size(self):
        return len(self.items)
   
   
s=Stack()
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())

  栈(stack),某些地点名称为仓库,是豆蔻梢头种容器,可存入数据元素、访问成分、删除成分,它的特色在于只可以同意在容器的风度翩翩端(称为栈顶上部分指标,阿拉伯语:top)实行进入数据(瑞典语:push)和输出数据(意大利语:pop)的运算。未有了职分概念,保证其余时候能够访谈、删除的因素都是早前最终存入的那多少个成分,明确了风姿潇洒种默许的探问顺序。

用Python语言实现二个 stack

class Stack :
# Creates an empty stack.
def __init__( self ):
self._theItems = list()
# Returns True if the stack is empty or False otherwise.
def isEmpty( self ):
return len( self ) == 0
# Returns the number of items in the stack.
def __len__ ( self ):
return len( self._theItems )
# Returns the top item on the stack without removing it.
def peek( self ):
assert not self.isEmpty(), "Cannot peek at an empty stack"
return self._theItems[-1]
# Removes and returns the top item on the stack.
def pop( self ):
assert not self.isEmpty(), "Cannot pop from an empty stack"
return self._theItems.pop()
# Push an item onto the top of the stack.
def push( self, item ):
self._theItems.append( item )

这本书里面有'Data structures and algorithms using python'本身搜一下啊。  

Stack Operation           Stack Contents     Return Value
 s.isEmpty()     []                True
 s.push(4)     [4] 
 s.push('dog')     [4,'dog'] 
 s.peek()     [4,'dog']        'dog'
 s.push(True)     [4,'dog',True] 
 s.size()     [4,'dog',True]     3
 s.isEmpty()     [4,'dog',True]     False
 s.push(8.4)     [4,'dog',True,8.4] 
 s.pop()             [4,'dog',True]     8.4
 s.pop()             [4,'dog']         True
 s.size()     [4,'dog']         2

  由于栈数据构造只允许介怀气风发端进行操作,由此根据后进先出(LIFO, Last In First Out)的原理运作。

试编写三个算法,让四个顺序栈共用一个数组stack[N],分别实现入栈出栈操作

要2个栈公用叁个仓库储存空间看来栈顶指针只可以从两侧开头了(和队列有一些像)
设2个栈为s0,s1 ,s1起始的栈顶指针为-1,s2的开头栈顶指针为N
typedef struct
{
elemtype stack[N]; //栈存款和储蓄空间
int top[2]; //top为七个栈顶指针
}St;
St s;//s为全局变量用于操作
void push(int i,elemtype eState of Qatar//入栈操作,i代表栈的号码,e为入栈成分
{
if(i!=0||i!=1卡塔尔(قطر‎exit(0卡塔尔;//栈号不对
if(s.top[1]-s.top[0]==1)//栈满
{
printf("FULL!");
return;
}
if(i==0)s.tack[ s.top[0]]=e;//s0入栈
if(i==1)s.tack[--s.top[1]]=e;//s1入栈
}
void pop(int i,elemtype &e卡塔尔(قطر‎//出栈操作,i代表栈的数码,e为出栈成分
{
if(i!=0||i!=1State of Qatarexit(0State of Qatar;//栈号不对
if(i==0)
{
if(s.top[0]==-1)//栈s0空
{
printf("EMPTY!");
return;
}
else e=s.stack[s.top[0]--];//s0出栈
}
if(i==1)
{
if(s.top[1]==N)//栈s1空
{
printf("EMPTY!");
return;
}
else e=s.stack[s.top[1] ];//s1出栈
}
}  

本文以实例方式显得了Python算法中栈(stack)的兑现,对于学习数据构造域算法有早晚的参照借鉴价...

Stack : LIFO last-in first-out

  栈布局完毕

  栈能够用顺序表达成,也能够用链表达成。

 

图片 1

本文由68399皇家赌场发布于最新解决方案,转载请注明出处:python算法入门,Python算法之栈

关键词: 68399皇家赌场 其他分类

上一篇:如何保护你的CentOS操作系统

下一篇:没有了

最火资讯