Pytnon0126总结

双向链表

#自定义异常
class NullLinkedError(BaseException):def __init__(self):super().__init__("null linked error")class node():#content:创建节点,表示链表中元素,有三个属性,#       pre-前驱结点地址#       data-数据#       next-后继结点地址def __init__(self,data,pre=None,next=None):self.__pre = preself.__data = dataself.__next = nextdef get_data(self):return self.__datadef set_data(self,data):self.__data = datadef get_next(self):return self.__nextdef set_next(self,next):self.__next = nextdef get_pre(self):return self.__predef set_pre(self,pre):self.__pre = pre
#定义双向链表类
class double_linked():def __init__(self,len=0,first=None,last=None):self.__len = 0self.__first = firstself.__last = last
#增#增加头结点def insert_first(self,data):#定义当前要增加的节点nn = node(data)#判断是否为空if self.__first == None:self.__first = nself.__last = nelse:#不为的话,则插入n为结点n.set_next(self.__first)  #n 的下一个节点则为 self.__firstself.__first.set_pre(n)   #self.__first的前驱就应该等于n的地址self.__first = n         #则头结点就是nself.__len +=1               #长度循环def insert_last(self,data):n = node(data=data)if self.__len == 0:self.__first = nself.__last = nelse:n.set_pre(self.__last)self.__last.set_next(n)self.__last = nself.__len += 1def insert(self,data0,data):n = node(data=data)if self.__len == 0:raise NullLinkedError()else:currentnode = self.__firstflag = Falsewhile currentnode!=None:if currentnode.get_data()==data0:if currentnode.get_next()!=None:n.set_next(currentnode.get_next())n.set_pre(currentnode)currentnode.set_next(n)currentnode.get_next().set_pre(n)self.__len += 1else:self.insert_last(data)flag = Truebreakelse:currentnode = currentnode.get_next()if flag:print("插入成功")else:print("插入失败")#删除头结点,若空抛出异常,否则删除头元素def delete_first(self):if self.__len == 0:raise NullLinkedError()else:if self.__len == 1:self.__first = Noneself.__last = Noneelse:self.__first = self.__first.get_next()self.__first.set_pre(None)self.__len -= 1# 删除尾结点,若空抛出异常,否则删除尾元素def delete_last(self):if self.__len == 0:raise NullLinkedError()else:if self.__len == 1:self.__first = Noneself.__last = Noneelse:self.__last = self.__last.get_pre()self.__last.set_next(None)self.__len -= 1def delete(self,data):if self.__len == 0:raise NullLinkedError()elif self.__len == 1 :if self.__first.get_data()==data:self.__first = Noneself.__last = Noneself.__len -= 1else:currentnode = self.__firstwhile currentnode!=None:if currentnode.get_data()==data:if currentnode.get_pre()==None:self.delete_first()elif currentnode.get_next()==None:self.delete_last()else:currentnode.get_pre().set_next(currentnode.get_next())currentnode.get_next().set_pre(currentnode.get_pre())self.__len -= 1breakelse:currentnode = currentnode.get_next()def update_first(self,data):if self.__len == 0:raise NullLinkedError()else:self.__first.set_data(data)def update_last(self,data):if self.__len == 0:raise NullLinkedError()else:self.__last.set_data(data)def update(self,data0,data):if self.__len == 0:raise NullLinkedError()else:currentnode = self.__firstflag = Falsewhile currentnode!=None:if currentnode.get_data()==data0:currentnode.set_data(data)flag = Truebreakelse:currentnode = currentnode.get_next()if flag:print("修改成功")else:print("修改失败")def show_info(self):if self.__len == 0:print("空链表")else:currentnode = self.__firstwhile currentnode!=None:print(currentnode.get_data())currentnode = currentnode.get_next()def length(self):return self.__lend = double_linked()
'''
'''
d.insert_first("李宏宇")
d.insert_first("caoyang")
d.insert_last("huojinxu")
d.insert_last("wangyexiu")
print(d.length())
d.show_info()
d.delete_first()
d.delete_last()
print(d.length())
d.show_info()
'''
'''
d.insert_first("zzz")d.insert_last("c'c")
d.insert_last("hh")
d.delete("cc")
d.show_info()
print(d.length())

栈实现:

#自定义异常
class NullStackError(BaseException):def __init__(self):super().__init__("null stack error !!!")class MyStack():def __init__(self,len=0,list=None):self.__len = 0self.__list = listdef push(self,data):   #增self.__list.append(data)self.__len += 1def pop(self):     #删除temp = Noneif self.__len == 0:raise NullStackError()else:temp = self.__list.pop()self.__len -= 1return tempdef peek(self):   #查if self.__len == 0:raise NullStackError()else:return self.__list[-1]def length(self):    #长度return self.__len

前缀表达式 中缀表达式 后缀表达式

中缀表达式:a+bc-d 后缀表达式:abc+d- 前缀表达式:-d+*bca
中缀表达式:(a+b)c 后缀表达式:ab+c 前缀表达式:c+ab
中缀表达式:(a+b)
(c-d)/e 后缀表达式:ab+cd-e/ 前缀表达式:/e-cd+ab

注:可用栈进行变换,级别高去除级别低入栈等待,有括号左括号开始后出现右括号时取中间所有运算符号

Pytnon0126相关推荐

最新文章

  1. java标点符号用什么意思_java怎么统计字符串内的标点符号?
  2. java 时间段内月份_java获取某段时间内的月份列表
  3. burpsuite破解版
  4. IDEA: .java文件和.class不一致
  5. python实现抢劵_双十一福利丨机械键盘、蓝牙音箱送送送!Python/UI/Unity多场微课解剖双十一套路!...
  6. [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS
  7. Web测试与App测试的区别
  8. HTML页面浏览历史,浏览历史记录功能
  9. 警惕!关于5G的最新骗局!
  10. Ubuntu 安装Chromium浏览器
  11. 路由token验证和路由守卫~~狂徒李四
  12. 实战项目——智能农业沙盘
  13. 谷歌浏览器打开是搜狗浏览器怎么办?
  14. pytorch之---relu,prelu,leakyrelu
  15. CMMI特定目标(SG)和特定实践(SP)汇总
  16. 【递归】进制转换、字符串反转、判断回文
  17. 闵帆老师《论文写作》课学习心得
  18. 洛谷 P1195 口袋的天空 (题解+代码)
  19. 大公司上中台,钱没了...小公司上中台,公司没了
  20. 基于LabVIEW和Access数据库的温湿度监测系统上位机程序设计

热门文章

  1. 中企动力携力拓消防为安全出行保驾护航
  2. elasticsearch 基础 —— Mapping参数boost、coerce、copy_to、doc_values、dynamic、
  3. 中国的快餐文化的弊大于利
  4. cmake(8):install命令详解
  5. 网络--办公网线布局
  6. 《U型理论》速读笔记
  7. URL短链接压缩算法 微博短链接原理解析
  8. 三只松鼠沦为良品铺子的落难兄弟
  9. lable-----qq聊天气泡圆角设置
  10. java版我的世界下载_我的世界java版