class LNode:def __init__(self, elem, next_=None):self.elem = elemself.next = next_class LinkedListUnderUnderflow(ValueError):passclass LCList:def __init__(self) -> None:self.rear = Nonedef prepend(self, elem):p = LNode(elem)if self.rear is None:p.next = pself.rear = pelse:p.next = self.rear.nextself.rear.next = pdef append(self, elem):self.prepend(elem)self.rear = self.rear.nextdef generate_list(self):temp_list = []p = self.rear.nextif self.rear is None:return temp_listwhile True:temp_list.append(p.elem)if p is self.rear:return temp_listp = p.nextdef pop(self):if self.rear is None:raise LinkedListUnderUnderflow("in pop")p = self.rear.nextif self.rear == p:self.rear = Noneelse:self.rear.next = p.nextreturn p.elemdef pop_last(self):if self.rear is None:raise LinkedListUnderUnderflow("in pop_last")p = self.rear.nexte = self.rear.elemif self.rear == p:self.rear = Noneelse:while p.next is not self.rear:p = p.nextp.next = self.rear.nextself.rear = preturn eif __name__ == '__main__':lclist = LCList()for i in range(1, 11):lclist.append(i)print(lclist.generate_list())lclist.pop()print(lclist.generate_list())lclist.pop_last()print(lclist.generate_list())
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!