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

网站后期维护方案手机销售网站怎么做

网站后期维护方案,手机销售网站怎么做,防城港网站制作,可以做两个网站指向同一个域名目录 一、双向链表 定义类和封装函数以及测试样例如下#xff1a; 注意事项#xff1a; 二、循环链表 单循环列表的类和函数封装如下#xff1a; 注意事项#xff1a; 三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循…目录 一、双向链表 定义类和封装函数以及测试样例如下 注意事项 二、循环链表 单循环列表的类和函数封装如下 注意事项  三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循环链表尾删 完整测试以及结果 四、栈 顺序栈 顺序栈本质以及组成 顺序栈的操作 链栈 一、双向链表 对于单向链表而言。只能通过头节点或者第一个节点出发单向的访问后继节点每个节点只能记录其后继节点的信息位置不能向前遍历。 所以引入双向链表双向链表可以保持单向链表特点的基础上让每个节点既能向后访问后继节点也可以向前访问前驱节点。 相较于单向链表我们更多的是在每个结点上加入了一个前驱链接域 定义类和封装函数以及测试样例如下 class Node(object):def __init__(self,data):self.next Noneself.prior Noneself.data dataclass DoubleLinklist(object):def __init__(self):self.head Noneself.size 0def is_empty(self):return self.size 0def add_head(self,value):nodeNode(value)if self.is_empty():self.head nodeself.size1else:node.next self.headself.head.prior nodeself.head nodeself.size 1def show_me(self):if self.is_empty():print(空表查看不了)else:q self.headwhile q :print(q.data,end )q q.nextdef add_anywhere(self,location,value):if location 1 or location self.size1:print(插入失败)else:node Node(value)if location 1:self.add_head(value)else:q self.headi 1while i location-1:q q.nexti 1if q.next is None:q.next nodenode.prior qelse:node.next q.nextnode.prior qq.next.prior nodeq.next nodeself.size1def del_anywhere(self,location):if self.is_empty() or location 1 or location self.size:print(删除失败)else:if location 1:self.head self.head.nextself.head.prior Noneelse:qself.headi 1while i location :q q.nexti 1if q.next :q.prior.next q.nextq.next.prior q.priorelse:q.prior.next Noneself.size -1def find_node(self,value):if self.is_empty():print(查找失败)else:q self.headwhile q:if q.data value:return Trueq q.nextreturn Falseif __name__ __main__:new_lDoubleLinklist()print(头插)new_l.add_head(50)new_l.add_head(40)new_l.add_head(30)new_l.add_head(20)new_l.add_head(10)new_l.show_me()print()print(任意位置插入)new_l.add_anywhere(1,666)new_l.add_anywhere(7,666)new_l.add_anywhere(3,666)new_l.show_me()print()print(任意位置删除)new_l.del_anywhere(8)new_l.del_anywhere(3)new_l.del_anywhere(1)new_l.show_me()print()print(找是否存在值30)print(new_l.find_node(30))print() 结果如下 注意事项 对链表的删除和插入操作我们均要考虑空表、末尾元素、单个元素情况双循环链表的插入操作 :                       node.next q.next                    node.prior q                    q.next.prior node                    q.next node 这四条语句除了第一条的位置不能变动以外防止丢失结点后面的操作前后顺序没有强制要求。 二、循环链表 循环链表就是首尾相连的链表通过任意一个节点都能将整个链表遍历一遍 单循环列表的类和函数封装如下 class Node(object):def __init__(self,data):self.data dataself.next Noneclass CirculateLinkList(object):def __init__(self):self.head Noneself.size 0def is_empty(self):return self.size 0def add_tail(self,value):node Node(value)if self.is_empty():self.head nodenode.next nodeelse:q self.headi 1while i self.size:q q.nexti 1q.next nodenode.next self.headself.size 1def show_me(self):if self.is_empty():print(空表)elif self.size 1 :print(self.head.data)else:q self.headi 1while i self.size1: #q要定位到第一个结点才能遍历完print(q.data,end )qq.nexti 1def del_tail(self):if self.is_empty():print(删除失败)elif self.size 1 :self.head Noneself.size -1else:q self.headi 1while i self.size-1 :q q.nexti1q.next self.headself.size - 1if __name__ __main__:new_lCirculateLinkList()print(尾插)new_l.add_tail(30)new_l.add_tail(20)new_l.add_tail(10)new_l.show_me()print()print(尾删)new_l.del_tail()new_l.del_tail()new_l.show_me()print() 结果 注意事项  基本注意事项不再赘述这里有个格外要注意的点 def show_me(self):         if self.is_empty():             print(空表)         elif self.size 1 :             print(self.head.data)         else:             q self.head             i 1             while i self.size1:  #q要定位到第一个结点才能遍历完                 print(q.data,end )                 qq.next                 i 1 while循环要多循环一次使得q指向第一个结点才能遍历完整 三、双向循环链表 双循环链表同样需要考虑几个点如何创建如何增删改查由于是双向的那么可以不用像单向的删除操作中一定要找到删除元素前一个位置可以直接定位到要删除的位置只需要把前驱后继都重新分配好即可。 结点类和双循环链表的定义部分 class Node(object):def __init__(self,data):self.datadataself.nextNoneself.priorNoneclass DoubleCirculateLinkList(object):def __init__(self):self.headNoneself.size0 函数封装之判空和尾插 注意尾插部分要注意分空表和单元素情况 def is_empty(self):return self.size 0def add_tail(self,value):nodeNode(value)if self.is_empty():self.headnodenode.nextnodenode.priornodeelif self.size 1:self.head.nextnodeself.head.priornodenode.nextself.headnode.priorself.headelse:qself.headwhile True:qq.nextif q.nextself.head:breaknode.nextself.headnode.priorqq.nextnodeself.head.priornodeself.size1 这里的常规尾插我用到的遍历循环是while True内部增加一个判断退出的条件来获得末尾结点q 情况全分析完毕整体判断外size1即可 双循环链表遍历 遍历涉及到打印我们用一个变量q来记录常规情况下要遍历到最后一个结点但这还不够要执行的下去循环内的打印语句才行所以要留意。 def show_me(self):if self.is_empty():print(空表)else:qself.headwhile True:print(q.data,end )qq.nextif q self.head:break 双循环链表尾删 首先空表无法删除单元素删除直接headNone常规情况可直接遍历到最后一个结点由于是双向的链表所以不用找倒数第二个结点了然后将该结点的前驱结点next指向headhead指向的结点的前驱再指向回来即可删除。 def del_tail(self):if self.is_empty():print(空表)elif self.size 1:self.head Noneelse:qself.headwhile True:qq.nextif q.nextself.head:breakq.prior.nextself.headself.head.priorq.priorself.size-1完整测试以及结果 class Node(object):def __init__(self,data):self.datadataself.nextNoneself.priorNoneclass DoubleCirculateLinkList(object):def __init__(self):self.headNoneself.size0def is_empty(self):return self.size 0def add_tail(self,value):nodeNode(value)if self.is_empty():self.headnodenode.nextnodenode.priornodeelif self.size 1:self.head.nextnodeself.head.priornodenode.nextself.headnode.priorself.headelse:qself.headwhile True:qq.nextif q.nextself.head:breaknode.nextself.headnode.priorqq.nextnodeself.head.priornodeself.size1def show_me(self):if self.is_empty():print(空表)else:qself.headwhile True:print(q.data,end )qq.nextif q self.head:breakdef del_tail(self):if self.is_empty():print(空表)elif self.size 1:self.head Noneelse:qself.headwhile True:qq.nextif q.nextself.head:breakq.prior.nextself.headself.head.priorq.priorself.size-1if __name__ __main__:new_lDoubleCirculateLinkList()print(尾插)new_l.add_tail(10)new_l.add_tail(20)new_l.add_tail(30)new_l.add_tail(40)new_l.add_tail(50)new_l.show_me()print()print(尾删)new_l.del_tail()new_l.del_tail()new_l.show_me()print() 四、栈 顺序栈 顺序存储的栈即是顺序栈 顺序栈本质以及组成 本质上顺序栈是一个只允许在栈顶进行插入和删除操作的顺序表遵循LIFO 需要使用一个容器存储一个栈例如列表 顺序栈的操作 这里直接使用内置函数去对栈封装 class Stack(object):def __init__(self):self.data []def is_empty(self):return self.data []def push(self,value):self.data.insert(0,value)def pop(self):self.data.pop(0)def show(self):for i in self.data:print(i,end )print()def get_top_value(self):return self.data[0]def get_size(self):return len(self.data) 链栈 既然顺序栈就是对栈顶元素增删的特殊的顺序表那么链栈就是对栈顶元素增删的特殊的单向链表 这里我的pop不仅实现了删除而且还增加了额外的返回值 代码如下 class Node(object):def __init__(self,data):self.datadataself.nextNoneclass LinkStack(object):def __init__(self):self.size0self.headNonedef is_empty(self):return self.size0def push(self,value):nodeNode(value)node.nextself.headself.headnodeself.size1def pop(self):if self.is_empty():print(空栈)else:qself.head.dataself.headself.head.nextself.size-1return qdef show(self):if self.is_empty():print(空栈)else:qself.headwhile q:print(q.data,end )qq.nextdef get_top_value(self):if self.is_empty():return Noneelse:return self.head.datadef get_size(self):return self.size未完待续持续跟新中
http://www.hkea.cn/news/14489564/

相关文章:

  • 简单的网站建设公司实时热搜
  • 怎样使用自己的电脑做网站wordpress 网上商城
  • 简述电子商务网站的建设流程图dw做的网站如何上传
  • wordpress 站点个人网站如何做即时支付
  • soho外贸网站建设扬州百度关键词优化
  • 虚拟主机网站建设过程网络推广优化服务
  • 建设酒店网站ppt模板下载中国龙城室内设计联盟
  • 网站制作论文文献综述网站建设及推广优化
  • 专题页网站做班级网站的实训报告
  • 最全的数据网站注册查询官方网站
  • 昆山建设招投标网站wordpress误删插件
  • 网站建设工作室 怎么样山西省住房建设厅网站首页
  • 网站模板双语360网站建设基本情况
  • 用php做的网站软件建站之星破解版下载
  • 简单的网站开发模板WordPress插件api调用
  • 网站建设与网页设计专业的友情链接交换网站
  • 建设网站的目的及功能定位主要包括哪些内容网站推广是什么意思
  • 公司推广做哪个网站三亚做网站那家效果好
  • 网站设计制作上海如何用家用电脑做网站
  • 视差效果网站展会网站制作
  • 如果只做p2p种子搜索网站wordpress 数据库 类型
  • 二级域名如何绑定网站移动互联网技术和智能设备终端的普及
  • 培训网站开发哪个好手机网站建设维护
  • 用二级页面做网站的源代码龙岩百度贴吧
  • 网站备案期间能使用吗百度只收录wordpress
  • 做策划有帮助的网站闵行区做网站
  • 成都网站推广公司排名建筑人才网首页
  • 做饰品一般用什么网站做首饰linux安装wordpress无法访问
  • 网站 建设wordpress百度主动
  • 吕梁seo网站建设做网站花的钱和优化网站有关系吗