今日继续进行了队列及单链表的学习。
一、队列,先进先出的有序结构。基础代码如下:
# 基本队列的代码
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
# 双端队列
class Deque:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def addFront(self, item):
self.items.append(item)
def addRear(self, item):
self.items.insert(0, item)
def removeFront(self):
return self.items.pop()
def removeRear(self):
return self.items.pop(0)
def size(self):
return len(self.items)
# 回文词判断的代码
def palchecker(astring):
chardeque = Deque()
for ch in astring:
chardeque.addRear(ch)
stillEqual = True
while chardeque.size()>1 and stillEqual:
first = chardeque.removeFront()
last = chardeque.removeRear()
if first != last:
stillEqual = False
return stillEqual
今天这部分,没有遇到太多困难。但是到了单链表,真是让我头大了一番:
二、单链表
# 单链表,记住一点,Node就是那个节点,不要去想其他,节点有它自己的方法,都可以各自加入。
class Node:
def __init__(self, data): # 代表每个节点
self.data = data # 可以取值
self.next = None # 可以调用
class SLList:
def __init__(self):
self.head = Node(None) # 链表头还是有点搞不明白
def is_empty(self):
return not self.head.next # 此处判断有疑惑
def size(self): # 计算长度
temp = self.head
count = 0
while temp is not None:
count += 1
temp = temp.next
return count
def add(self, item): # 在head后添加
temp = Node(item)
temp.next = self.head.next
self.head.next = temp
def print_list(self):
print('linked_list:') # 暂且可用
temp = self.head
new_list = []
while temp is not None:
new_list.append(temp.data)
temp = temp.next
print(new_list)
def search(self, item):
temp = self.head
found = False
while temp is not None and not found:
if temp.data == item:
found = True
else:
temp = temp.next
return found
今天在学写链表的过程中,出现了以下问题:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。