前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构学习-python实现02--0402

数据结构学习-python实现02--0402

原创
作者头像
到不了的都叫做远方
修改2020-04-03 10:49:15
3720
修改2020-04-03 10:49:15
举报

今日继续进行了队列及单链表的学习。

一、队列,先进先出的有序结构。基础代码如下:

代码语言:python
复制
# 基本队列的代码
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)
        

代码语言:python
复制
# 双端队列
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)

代码语言:javascript
复制
# 回文词判断的代码
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

今天这部分,没有遇到太多困难。但是到了单链表,真是让我头大了一番:

二、单链表

代码语言:python
复制
#  单链表,记住一点,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

今天在学写链表的过程中,出现了以下问题:

  • 1.分不清Node与链表的关系,最后终于明白,链表类就是给与节点与节点之间方法,Node就是操作节点的方法。
  • 2.分清楚前后顺序,记住不能让链表找不到链接处了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com