数据结构之栈和队列

---恢复内容开始---

栈和队列


 

1. 栈(Stack):其实就像一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能在容器的一端(称为栈顶 top)进行加入数据(push)和输出数据(pop)的运算,我们访问或者删除的元素都是最后存入的那个元素。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。简单点来说就是我们往一个箱子里面叠放东西,越后放入的东西越靠上,我们拿东西的时候也是从上面的书开始拿起。

 

python 3 实现代码如下:

class MyStack(object):
    '''栈功能有:
    插入数据 push
    删除数据 pop
    判断是否为空 is_empty
    查看数据栈顶元素 peek
    查看栈大小 size
    遍历栈 travel
    '''

    def __init__(self):
        self.items = []

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

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

    def is_empty(self):
        return len(self.items) == []

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

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

    def travel(self):
        if 0 != len(self.items):
            print("栈的元素有")
            for item in self.items:
               print(item)
        else:
            print('栈没有任何元素')


if __name__ == "__main__":
    stack = MyStack()
    stack.push("第一个元素:66")
    stack.push("第二个元素:88")
    stack.push("第三个元素:22")
    print("栈中元素个数:%d" % stack.size())
    stack.travel()
    print("返回栈顶元素:%s" % stack.peek())
    print("删除栈顶元素:%s" % stack.pop())
    print("删除栈顶元素:%s" % stack.pop())
    print("删除栈顶元素:%s" % stack.pop())

  

2. 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,它不允许从中间操作数据。可以理解成我们排队打饭的队伍,后面来的排后面,前面的打完饭就离开。

 

Python 3 实现代码如下:

 

class Queue(object):
    '''队列
    1. 插入数据 push
    2. 删除数据 pop
    3. 查看大小 size
    4. 遍历 travel
    '''
    def __init__(self):
        self.items = []

    def push(self,item):
        #从排尾插入排队,队伍最后一个人为列表元素的0位
        self.items.insert(0,item)

    def pop(self):
        #删除排头,即列表最后一位数
        return self.items.pop()

    def size(self):
        return len(self.items)
    
    def stravel(self):
        if 0 != len(self.items):
            for item in self.items:
                print(item,end = " ")  #end =" " 用法将输出的列表不换行


        print(" ")
 


if __name__ == "__main__":
    queue = Queue()
    queue.push("第一个排队的人")
    queue.push("第二个排队的人")
    queue.push("第三个排队的人")
    print("队列的长度为:",queue.size() )
    queue.stravel()
    print("删除排头:",queue.pop())
    queue.stravel()
    print("再删除排头:",queue.pop())

   

posted on 2019-01-24 20:46  人与人之间的交流技巧——心  阅读(117)  评论(0)    收藏  举报

导航