ADT 线性表概念 链表
2019-01-25 21:04
232 查看
''' ADT(抽象数据类型):拥有属性和方法,属性可以存储数据,方法可以操作属性 2.线性表概念 3.链表(删除 插入) 列表(查看) 属性:date --存储数据 next---下一个节点的地址 方法:增删改查 ''' ''' class node(): def __init__(self,data=None,next=None): self.__data= data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class lb(): def __init__(self,first): self.__first = first def delete(self,data): if self.__first != None: if self.__first.get_next!=None: if self.__first.get_data()==data: self.__first = self.__first.get_next() else: crrentNode = self.__first pre_crrentNode =crrentNode crrentNode = crrentNode.get_next() while crrentNode.get_next()!=None: if crrentNode.get_data()==data: pre_crrentNode.set_next(crrentNode.get_next()) break else: pre_crrentNode = crrentNode crrentNode = crrentNode.get_next() else: if self.__first.get_data() == data: self.__first = None else: print("空链表不允许删除") def append(self,data): n = node(data) if self.__first==None: self.__first = n else: currentNode = self.__first while currentNode.get_next()!=None: currentNode = currentNode.get_next() currentNode.set_next(n) def insert(self, data1, data2): if self.__first == None: print("空链表,没办法插入") else: currentNode = self.__first flag = False while currentNode.get_next() != None: if currentNode.get_data() == data1: flag = True break else: currentNode = currentNode.get_next() if flag: n = node(data2, currentNode.get_next()) currentNode.set_next(n) else: if currentNode.get_data() == data1: currentNode.set_next(node(data2)) def showInfo(self): if self.__first == None: print("该链表为空") else: currentNode = self.__first while currentNode.get_next() != None: print(currentNode.get_data()) currentNode = currentNode.get_next() print(currentNode.get_data()) def update(self,data1,data2): if self.__first ==None: print("空链表") else: currentNode = self.__first flag = False while currentNode.get_next() != None: if currentNode.get_data() == data1: flag = True break else: currentNode = currentNode.get_next() if flag: currentNode.set_data(data2) else: if currentNode.get_data() == data1: currentNode.set_data(data2) l = lb(None) l.append("李宏宇") l.insert("李宏宇","曹阳") l.update("李宏宇","霍金旭") l.showInfo() ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first): self.__first = first def delete(self,data): if self.__first != None: if self.__first.get_index != 0: if self.__first.get_data() == data: self._first = self.__first.get_next() else: currentNode = self._first pre_currentNode = currentNode currentNode = self.__first.get_next() while currentNode.get_next() != None: if currentNode.get_data() == data: pre_currentNode.set_next(currentNode.get_next()) else: pre_currentNode = currentNode currentNode = self.__first.get_next() else: if self.__first.get_data() == data: self.__first == None else: print("空链表不允许删除") ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first): self.__first = first def append(self,data1): n = node(data1) if self.__first == None: self.__first = n else: currentNode = self.__first while currentNode.get_next() != 0: currentNode = currentNode.get_next() currentNode.set_next(n) ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first): self.__first = first def insert(self,data1,data2): if self.__first == None: print("这是空链表") else: currentNode = self.__first flag = False while currentNode.get_next() != None: if currentNode.get_data() == data1: flag = True break else: currentNode = currentNode.get_next() if flag: n = node(data2,currentNode.get_next()) currentNode.set_next(n) else: if currentNode.get_data == data1: currentNode.set_next(node(data2)) ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first): self.__first = first def showInfo(self): if self.__first == None: print("空链表") else: currentNode = self.__first while currentNode.get_next != None: print(currentNode.get_data) currentNode = currentNode.get_next() print(currentNode.get_data) class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first): self.__first = first def update(self,data1,data2): if self.__first == None: print("空链表") else: currentNode = self.__first flag = False while currentNode.get_next != None: if currentNode.get_data == data1: flag = True break else: currentNode = currentNode.get_next if flag: currentNode.set_data(data2) else: if currentNode.get_next == data1: currentNode.set_data(data2) l = linked_list(None) #l.append("李宏宇") #l.insert("李宏宇","曹阳") l.update("李宏宇","霍金旭") l.showInfo() ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first=None,last =None): self.__first = first self.last = last def insert_first(self,data): n = node(data) if self.__first == None: self.__first = n self._last = n else: n.set_next(self.__first) self.__first = n def insert_last(self,data): n = node(data) if self.__first == None: self.__first == None self.__last == None else: self.__last.set_next(n) self.__last = n def insert(self,data0,data): n = node(data) if self.__first == None: self.__first = n self.__last = n else: currentnode = self.__first flag = False while currentnode.get_next() != None: if currentnode.get_data == data0: flag = True break else: currentnode = currentnode.get_next() if flag: n.set_next(currentnode.get_next()) currentnode.set_next(n) else: if currentnode.get_data == data0: self.insert_last(data) ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first=None,last =None): self.__first = first self.last = last def show(self): if self.__next == None: print("该链表为空") else: currentnode = self.__first while currentnode != None: print(currentnode.get_data()) currentnode = currentnode.get_next() ''' ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first=None,last =None): self.__first = first self.last = last def update_first(self,data): if self.__first == None: print("空链表") else: self.__first.set_data(data) def update_last(self,data): if self.first == None: print("空链表") else: self.__first.set_data(data) def update(self,data0,data): if self.__first == None: print("空链表") else: currentnode = self.__first flag = False while currentnode.get_next != None: if currentnode.get_data == data0: flag = True break else: currentnode = currentnode.get_next() if flag: currentnode.set_data(data) else: self.__update_last(data) ''' class node(): def __init__(self,data,next): self.__data = data self.__next = next def get_data(self): return self.__data def set_data(self,data): self.__data = data def get_next(self): return self.__next def set_next(self,next): self.__next = next class linked_list(): def __init__(self,first=None,last =None): self.__first = first self.last = last def delete(self,data): if self.__first == None: print("空链表") else: currentnode = self.__first precurrentnode = self.__first flag = False while currentnode.get_next() != None: if currentnode.get_data() == data: flag = True break else: precurrentnode = currentnode currentnode = currentnode.get_next() if flag: if precurrentnode == currentnode: self.delete_first() else: precurrentnode.set_next(currentnode.get_next()) else: if currentnode.get_data() == data: precurrentnode.set_next(None) self._last = precurrentnode
相关文章推荐
- 大话数据结构(三)线性表和链表的关键概念理解
- C_线性表(ADT)-单向循环链表的表示和实现
- 线性表实现:顺序表、链表、循环链表、双向循环链表
- 数据结构_线性表_链式存储_单链表 的基本操作
- [考研系列之数据结构]线性表之链表
- 数据结构_线性表_链式存储_双向循环链表的基本操作
- 数据结构那点事--线性表(链表)
- 数据结构之 线性表 逆序简历链表
- 数据结构 线性表之链表
- 基于C语言的线性表操作,包含单链表和顺序线性表两种类型
- 线性表之双向链表
- 【C++】c++实现线性表、链表
- 数据结构与算法——线性表链式存储(单循环链表)
- 线性表学习笔记-单链表形式(1)
- 第二天 之数据结构、链表的相关概念和操作
- 数据结构-线性表_单链表
- 《数据结构》严蔚敏版(java解)——第二章 线性表04 顺序单链表合并
- C# 数据结构与算法系列(三) 线性表之链表
- Java数据结构-线性表之链表应用-检测链表是否有环
- 数据结构---线性表----单链表结构与顺序存储结构的对比