||
没有代码的说教都是耍流氓!!!
一、栈和队列-Stack and Queue
在C语言中常用的数据结构是有序表。栈和队列两种数据类型是常用的数据结构,对有序表附加一些特殊的限定,就得到栈和队列。栈和队列都是特殊的有序表。本文不考虑复杂的栈和队列,比如多重栈和多重队列,仅是单一的栈和队列。
二、栈
插入、删除都是在表的一端(栈顶top)。
栈S=(s0,s1,……,sn-1),其中s0是栈底元素,sn-1是栈顶元素。S中的元素顺序进栈,第一次弹出的元素是sn-1,最后插入的元素总是先删除,因而栈是后入先出表,Last-In-First-Out即LIFO
Python中的列表是可变空间,我们可以用列表表示栈,原理上说列表可以有很多元素,说实话栈也是如此,那是动态栈,本文只考虑静态栈,即给列表指定长度即可。如果非要是小括号的形式,可tuple。
#栈 class Stack(): def __init__(self,capacity): self.capacity=capacity self.stack=[] def push(self,x): if len(self.stack)<self.capacity: self.stack.append(x) print(x,'进栈成功!') else: print('栈满啦,'+str(x)+' 进不去!') def pops(self): if len(self.stack)>0: y=self.stack.pop() print(y,'出栈成功!') else: print('栈为空啦,出个球啊!') def print_stack(self): print('现在的栈为',tuple(self.stack)) if len(self.stack)>0: print('栈顶为',self.stack[-1],'\n栈底为',self.stack[0]) capacity=9 stk=Stack(capacity) for item in range(3,18): stk.push(item) stk.print_stack() for i in range(capacity): stk.pops()
三、队列
队列的插入和删除在表的两端,插入称为入列,删除称为出列。插入端称为队尾rear,删除端称为队头front。最先入列的元素总是最先被删除,队列是先入先出表,First-In-First-Out即FIFO。
#队列 class Queue(): def __init__(self,capacity): self.capacity=capacity self.queue=[] def put(self,x): if len(self.queue)<self.capacity: self.queue.append(x) print(x,'入列成功!') else: print('队列满啦,'+str(x)+' 进不去!') def popq(self): if len(self.queue)>0: y=self.queue.pop(0) print(y,'出列成功!') else: print('队列为空啦,出个球啊!') def print_queue(self): print('现在的队列为',tuple(self.queue)) if len(self.queue)>0: print('队头为',self.queue[0],'\n队尾为',self.queue[-1]) capacity=9 que=Queue(capacity) for item in range(3,18): que.put(item) que.print_queue() for i in range(capacity): que.popq()
四、区别
注意两者哪个是头,哪个是尾。栈只有栈顶可以插入和删除,队列只在队尾插入、在队头删除。
五、下期预告
该来个回归了吧,线性回归是最简单的,那再加个多项式回归或者逻辑回归。
欢迎持续关注!如有问题交流,可直接回复,也欢迎批评指正!
如果没有账号,可发邮件hipython@outlook.com联系我,并注明文章题目。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 23:03
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社