• 数组实现栈和队列结构


    固定大小数组实现栈结构

      在栈的结构中,先进栈的元素后最后出来。利用固定大小数组实现栈结构的思路:首先有一个index指针,如果index为0表示栈为空,此时只能做push操作;如果index为数组的长度,说明栈已经满了,此时只能做pop操作和getStack返回栈顶元素操作。push操作的实现,当给栈压入一个元素时,index增加1;pop操作的实现,当弹出栈顶元素时,index减1。具体实现流程如下图所示:

    代码实现:

     1 class arrayToStack(object):
     2     def __init__(self, size):
     3         self.initSize= size
     4         self.__list = [ 0  for _ in range(size) ]
     5         self.index = 0
     6 
     7     def push(self, item):
     8         if self.index == self.initSize:
     9             print("The Stack is full")
    10             return
    11         self.__list[self.index] = item
    12         self.index += 1
    13 
    14     def pop(self):
    15         if self.index == 0:
    16             print("The Stack is empty")
    17         self.index -= 1
    18         return self.__list[self.index]
    19 
    20     def getStack(self):
    21         index = self.index - 1
    22         return self.__list[index]
    23 
    24     def printStack(self):
    25         stack = [self.__list[i] for i in range(self.index)]
    26         print(stack)
    View Code

    固定大小数组实现队列结构

      队列的结构是先进入队列的元素,先出队列。使用固定数组实现队列的思路:有两个指针start和end以及size表示当前队列的长度。start代表poll时所指的元素,poll一个元素start加1,size减1;end代表push时所指的位置,push一个元素end增加1,size加1。当size等于数组的长度时,此时队列已满,另end为0;当size等于0时,此时队列为空,另start为0。具体实现过程如下图所示:

     代码实现:

     1 class arrayToQueue(object):
     2     def __init__(self, initSize):
     3         self.initSize = initSize
     4         self.__list = [ 0 for _ in range(initSize) ]
     5         self.size = 0
     6         self.start = 0
     7         self.end = 0
     8 
     9     def push(self, item):
    10         if self.size == self.initSize:
    11             print("The queue is full")
    12             return
    13         self.size += 1
    14         self.__list[self.end] = item
    15         if self.end == len(self.__list) - 1:
    16             self.end = 0
    17         else:
    18             self.end += 1
    19 
    20     def poll(self):
    21         if self.size == 0:
    22             print("The queue is empty")
    23             return
    24         self.size -= 1
    25         i = self.__list[self.start]
    26         if self.start == len(self.__list) - 1:
    27             self.start = 0
    28         else:
    29             self.start += 1
    30         return i
    31 
    32     def printQueue(self):
    33         return [self.__list[i] for i in range(self.start, self.start+self.size)]
    View Code
  • 相关阅读:
    Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
    Lua数学库
    Nginx在Windows上启动、停止的命令
    Javascript虚拟机
    Tiled Forward Shading Links
    Xcode同一个Workspace中两个工程依赖于Undefined Symbol Error
    Clang: Undefined symbols, but it is there using nm.
    MVC+Ext.net零基础学习记录(二)
    MVC+Ext.net零基础学习记录(一)
    根据某个字符串查找整个数据库
  • 原文地址:https://www.cnblogs.com/dabric/p/11758949.html
Copyright © 2020-2023  润新知