python中如何用链表实现队列?
答案:2 悬赏:20 手机版
解决时间 2021-02-27 18:39
- 提问者网友:niaiwoma
- 2021-02-27 12:39
python中如何用链表实现队列?
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-02-27 13:29
python中的队列是列表吗?
如果有问题, 希望能一起研究一下?
看下网名吧, 楼主
如果有问题, 希望能一起研究一下?
看下网名吧, 楼主
全部回答
- 1楼网友:酒醒三更
- 2021-02-27 15:01
node没什么问题,就是变量定义的时候是一个下划线而不是两个
stack这里有点问题,
(不知道你这里为啥需要做成一个循环的链表,不过不管了)
1. 首先你得定义一个head和一个tail,这样的话才能把tail和head连接形成一个循环
2. 初始化stack的话把head和tail都设置成none表示这是个空的stack
3. push的话看你喜欢这么写了,比较喜欢的是把push进去的node作为新的head,然后修改一下self._head为新node,然后修改新node的next为老的head,再连接一下tail和head便可,这样就省掉一些循环
4. pop的话就加一些判定好了,首先看head是不是none,如果是就说明stack是空的。如果发现tail和head都是同一个的话就说明stack里就一项了,提取完head之后就设置stack为空吧。然后先提取head,然后读取head后面的那一个node并且设置为新的head,然后再连接一下tail和head便可
5. 附上代码供参考.
class node:
def __init__(self, newdata):
self._data = newdata
self._next = none
def getdata(self):
return self._data
def getnext(self):
return self._next
def setdata(self, newdata):
self._data = newdata
def setnext(self, newnode):
self._next = newnode
class stack:
def __init__(self):
self._head = none
self._tail = none
def push(self, data):
print 'push',data,'into stack'
new = node(data)
cur = self._head
end = self._tail
if cur is none:
self._head = new
new.setnext(new)
self._tail = new
else:
new.setnext(self._head)
self._head = new
self._tail.setnext(new)
def pop(self):
if self._head is not none:
cur = self._head
print 'pop',cur.getdata(),'out of stack'
if cur.getnext() is not cur:
self._head = cur.getnext()
self._tail.setnext(self._head)
else:
self._head = none
self._tail = none
else:
print 'stack is empty'
my = stack()
for i in range(5):
my.push(i)
for i in range(6):
my.pop()
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯