当前位置: 首页 > news >正文

来宾市住房和城乡建设局网站西安网站维护公司

来宾市住房和城乡建设局网站,西安网站维护公司,下列属于b2b网站的有,郴州网站制作文章目录 一、Python实现数据结构1.1 python实现单向链表1.2 python实现单向循环链表1.3 python实现双向链表 一、Python实现数据结构 1.1 python实现单向链表 singleLinkedList.py class SingleNode:"""the node of single link list"""def …

文章目录

  • 一、Python实现数据结构
    • 1.1 python实现单向链表
    • 1.2 python实现单向循环链表
    • 1.3 python实现双向链表

一、Python实现数据结构

1.1 python实现单向链表

singleLinkedList.py

class SingleNode:"""the node of single link list"""def __init__(self, item):self.item = itemself.next = Nonedef __str__(self):return str(self.item)class SingleLinkList:"""sing link list"""def __init__(self):self._head = Nonedef is_empty(self):"""判断链表是否为空"""return self._head is Nonedef length(self):"""获取链表长度"""cur = self._headcount = 0while cur is not None:count += 1cur = cur.nextreturn countdef travel(self):"""遍历链表"""cur = self._headwhile cur is not None:print(cur.item)cur = cur.nextprint()def add(self, item):"""链表头部添加元素"""node = SingleNode(item)node.next = self._headself._head = nodedef append(self, item):"""链表尾部添加元素"""node = SingleNode(item)if self.is_empty():self._head = nodeelse:cur = self._headwhile cur.next is not None:cur = cur.next"""此时cur指向最后一个节点,next=None"""cur.next = nodedef insert(self, pos, item):"""指定位置添加元素"""# 若pos小于0,则执行头部插入if pos <= 0:self.add(item)# 若pos大鱼链表长度,则执行尾部插入elif pos > self.length() - 1:self.append(item)else:node = SingleNode(item)cur = self._headcur_pos = 0while cur.next is not None:"""获取插入位置的上一个节点"""if pos - 1 == cur_pos:node.next = cur.nextcur.next = nodebreakcur = cur.nextcur_pos += 1def remove(self, item):"""删除节点"""if self.is_empty():returncur = self._headif cur.item == item:self._head = cur.nextelse:while cur.next is not None:if cur.next.item == item:cur.next = cur.next.nextbreakcur = cur.nextdef search(self, item):"""查找节点位置"""cur = self._headcount = 0while cur is not None:if cur.item == item:return countcur = cur.nextcount += 1return -1# if __name__ == "__main__":
#     ll = SingleLinkList()
#     ll.add(1)
#     ll.add(2)
#     ll.append(3)
#     ll.insert(2,4)
#     print("length: ", ll.length())
#     ll.travel()
#     print("search(3): ", ll.search(3))
#     print("search(5): ", ll.search(5))
#     ll.remove(1)
#     print("length: ", ll.length())
#     ll.travel()

1.2 python实现单向循环链表

sinCycLinkedList.py

class Node:def __init__(self, item):self.item = itemself.next = Nonedef __str__(self):return str(self.item)class SinCycLinkedList:"""单向循环链表"""def __init__(self):self._head = Nonedef is_empty(self):"""判断链表受否为空"""return self._head is Nonedef length(self):"""返回链表长度"""if self.is_empty():return 0cur = self._headcount = 1while cur.next != self._head:count += 1cur = cur.nextreturn countdef travel(self):"""遍历链表"""if self.is_empty():returncur = self._headprint(cur.item)while cur.next != self._head:cur = cur.nextprint(cur.item)print()def add(self, item):"""链表头部添加节点"""node = Node(item)if self.is_empty():self._head = nodenode.next = nodeelse:cur = self._headnode.next = self._headwhile cur.next != self._head:cur = cur.nextcur.next = nodeself._head = nodedef append(self, item):"""链表尾部添加节点"""node = Node(item)if self.is_empty():self._head = nodenode.next = self._headelse:cur = self._headwhile cur.next != self._head:cur = cur.nextcur.next = nodenode.next = self._headdef insert(self, pos, item):"""链表指定位置插入节点"""if pos <= 0:self.add(item)elif pos > self.length() - 1:self.append(item)else:cur = self._headcur_pos = 0node = Node(item)while cur.next != self._head:if cur_pos == pos - 1:node.next = cur.nextcur.next = nodebreakcur = cur.nextcur_pos += 1def remove(self, item):"""删除链表指定节点"""if self.is_empty():returnpre = self._headif pre.item == item:cur = prewhile cur.next != pre:cur = cur.nextcur.next = pre.nextself._head = pre.nextelse:cur = prewhile cur.next != pre:if cur.next.item == item:cur.next = cur.next.next# breakcur = cur.nextdef search(self, item):"""查找节点,返回下标"""cur = self._headcount = 0while cur.next != self._head:if cur.item == item:return countcount += 1cur = cur.nextreturn -1# if __name__ == "__main__":
#     ll = SinCycLinkedList()
#     ll.add(1)
#     ll.add(2)
#     ll.travel()
#     ll.append(3)
#     ll.insert(2, 4)
#     ll.insert(4, 5)
#     ll.insert(0, 6)
#     print("length ", ll.length())
#     ll.travel()
#     print("search(3)", ll.search(3))
#     print("search(7)", ll.search(7))
#     print("search(6)", ll.search(6))
#     print("remove(1)")
#     ll.remove(1)
#     print("length: ", ll.length())
#     print("remove(6)")
#     ll.remove(6)
#     ll.travel()

1.3 python实现双向链表

doubleLinkedList.py

class Node:def __init__(self, item):self.item = itemself.previous = Noneself.next = Nonedef __str__(self):return str(self.item)class DLinkedList:"""双向链表"""def __init__(self):self._head = Nonedef is_empty(self):"""判断链表是否为空"""return self._head is Nonedef length(self):"""返回链表长度"""if self.is_empty():return 0count = 1cur = self._headwhile cur.next is not None:count += 1cur = cur.nextreturn countdef travel(self):"""遍历链表"""if self.is_empty():returncur = self._headprint(cur.item)while cur.next is not None:cur = cur.nextprint(cur.item)print()def add(self, item):"""链表头部添加节点"""node = Node(item)if self.is_empty():self._head = nodeelse:node.next = self._headself._head.previous = nodeself._head = nodedef append(self, item):"""链表尾部添加节点"""node = Node(item)if self.is_empty():self._head = nodeelse:cur = self._headwhile cur.next is not None:cur = cur.nextcur.next = nodenode.previous = curdef insert(self, pos, item):"""链表指定位置插入节点"""if pos <= 0:self.add(item)elif pos > self.length() - 1:self.append(item)else:cur = self._headnode = Node(item)cur_pos = 0while cur is not None:if cur_pos == pos - 1:node.next = cur.nextnode.previous = curcur.next = nodecur.next.previous = nodebreakcur = cur.nextcur_pos += 1def remove(self, item):"""链表删除指定元素"""if self.is_empty():returncur = self._headif cur.item == item:self._head = cur.nextself._head.previous = Noneelse:while cur.next is not None:if cur.item == item:cur.previous.next = cur.nextcur.next.previous = cur.previousreturncur = cur.nextif cur.item == item:cur.previous.next = Nonedef search(self, item):"""查找链表指定元素,返回元素下标"""cur_pos = 0cur = self._headwhile cur is not None:if cur.item == item:return cur_poscur = cur.nextcur_pos += 1return -1if __name__ == "__main__":ll = DLinkedList()ll.add(1)ll.add(2)ll.append(3)ll.insert(2, 4)ll.insert(4, 5)ll.insert(0, 6)print("length: ", ll.length())        ll.travel()print("search(3) ", ll.search(3))print("search(4) ", ll.search(4))print("search(10) ", ll.search(10))ll.remove(1)print("length: ", ll.length())ll.travel()print("删除首节点 remove(6): ")ll.remove(6)ll.travel()print("删除尾节点 remove(5): ")ll.remove(5)ll.travel()
http://www.hotlads.com/news/4807.html

相关文章:

  • 煤炭网站建设企业360搜索优化
  • 网站专题页面大连seo
  • 网络推广最好的网站有哪些网络营销工具介绍
  • 商旅网站建设什么叫做网络营销
  • iis默认网站 建设中可以免费推广的平台
  • 有哪些做平面设计好的网站有哪些怎么请专业拓客团队
  • 网站的设计方案在哪里成都网站seo服务
  • 站群推广有哪些方式国内十大软件测试培训机构
  • 做网站开发学什么语言东莞网络公司网络推广
  • 四川省住房和城乡建设厅网站官网宁波受欢迎全网seo优化
  • 如何开发一个网站如何在微信上做推广
  • 响应式网站建设哪里有如何实施网站推广
  • 青岛 网站维护桌子seo关键词
  • 着陆页制作网站如何写软文推广产品
  • 宝应县住房和城乡建设局网站太原网站建设方案咨询
  • 海淀网站制作全国各城市感染高峰进度查询
  • 评论凡科网站建设怎么样在线生成个人网站源码
  • 网站如何被收录情况哪里可以做
  • 助听器网站建设方案草稿今日热点新闻一览
  • 企业型网站建设搜索引擎优化指的是什么
  • 望城建设局网站win10优化大师免费版
  • 个人备案用作资讯网站快速网络推广
  • 网站内部链接导向seo网站内部优化方案
  • 自定义字段wordpressseo整站排名
  • 网站设计课程总结最新营销模式
  • 个人网站建设的要点软文推广页面
  • 网站在什么地方设关键词手机制作网页用什么软件
  • 专业做英文网站的公司seo资源咨询
  • 银行的网站怎么做软文平台
  • 山西中宇建设集团网站想要网站导航推广