数据结构是一种比较抽象的计算机结构,我们要理解数据结构的基本原理,必须对计算机的底层,计算机硬件的运行方式有一定的了解,比如说,创建一个新的变量,赋值给这个变量,那么就称这个变量为标识符,变量在内存空间里面有一个独立的小空间,这个小空间里存储赋值的数据,这就是变量在物理硬件上的存储方式。python语言内部并没有指针的概念,所以对于学习数据结构来说,C语言更加适合,对于python语言需要自己去创建一个指针,来实现栈和队列的数据元素连接与脱离。
举个例子,我们把书本放到一个箱子里面,我们最先放入箱子中的书本,按顺序取是最后才取出来的,反而,最后放入箱子的书本,是最先取出来的。
对于python实现数据结构,通常使用列表这种数据类型,线性表,栈,队列等数据结构也可以使用列表这种数据类型来实现,列表在python中是一个重要的数据类型。
实现代码,如下:
class SequenceStack:#定义一个顺序栈的类 def __init__(self):#初始化栈 self.MaxStackSize = 10#初始化栈的长度,设置为10 self.s = [None for x in range(0,self.MaxStackSize)]#创建一个长度为10的没有元素的空列表 self.top = -1#初始化指针为-1 def IsEmptyStack(self):#判断栈是否为空 if self.top==-1:#当指针在原始位置时。此时空栈 iTop=True else: iTop=False return iTop def PushStack(self,x):#压栈,元素进栈 if self.top < self.MaxStackSize-1:#如果没有达到栈的最大存储空间,可以继续进栈。 self.top=self.top+1 self.s[self.top]=x elif None not in self.s: print("满栈") print('栈顶元素是',self.top) return self.top def PopStack(self):#弹出栈顶元素,即最后一个进栈的元素。 if self.IsEmptyStack(): print('空栈') else: iTop = self.top self.top = self.top - 1 return self.s[iTop] def GetTopStack(self):#查看栈顶元素 if self.IsEmptyStack(): print('空栈') return else: return self.s[self.top] def StackTraverse(self):#反转栈内元素 if self.IsEmptyStack(): print('空栈') else: for i in range(0,self.top+1): print(self.s[i],end=' ') def CreateStackByInput(self): data = input("请输入元素(继续输入请按回车键,结束请输入 '!'):") while data != '!': self.PushStack(data) if None not in self.s: break else: data = input("请输入元素:") if __name__ == '__main__':#设置主函数作为程序出口 S = SequenceStack()#实例化对象。 S.CreateStackByInput()#调用函数 print('栈内的元素为:',end=' ') S.StackTraverse()#调用函数文中或有诸多不妥之处,还望大家指出和海涵。