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