数据结构与算法-顺序表和链表
2021-04-03 22:26
标签:inner 进制 find 引用 for 一个 查看 travel numpy 数据结构与算法-顺序表和链表 标签:inner 进制 find 引用 for 一个 查看 travel numpy 原文地址:https://www.cnblogs.com/linranran/p/13443102.html内存
import numpy as np
np.iinfo(‘int8‘)
iinfo(min=-128, max=127, dtype=int8)
顺序表
链表
节点数据结构的封装
# 节点数据结构的封装
class Node():
def __init__(self,item):
self.item = item
self.next = None
class Link():
def __init__(self): # 构建一个空的链表
self._head = None # 只可以指向第一个节点
# 链表头部添加元素
def add(self,item):
node = Node(item) # 创建一个新的节点
node.next = self._head # 让新的第一个节点连接以前的第一个节点
self._head = node # 让空链表连接新的第一个节点
# 遍历整个链表
def travel(self):
# print(self._head.item)
# print(self._head.next.item)
# print(self._head.next.next.item) # ...
cur = self._head
while cur:
print(cur.item)
cur = cur.next
# 查看链表长度
def length(self):
count = 0
cur = self._head
while cur:
count += 1
cur = cur.next
return count
# 判断列表是否为空
def isEmpty(self):
return self._head == None
# 查询节点是否存在
def searchItem(self, item):
find = False
cur = self._head
while cur:
cur_item = cur.item # 遍历节点,将数据值赋给cur_item
if item == cur_item:
find = True
break
cur = cur.next
return find
# 向链表尾部添加元素
def append(self,item):
node = Node(item)
if self._head == None:# 如果链表为空
self._head = node
return
# 链表非空
cur = self._head
pre = None # per永远指向cur前一个节点
while cur:
pre = cur
cur = cur.next
# 循环结束后pre指向链表的最后一个节点,cur指向空
pre.next = node
# 向指定位置插入节点
def insert(self,pos,item):
node = Node(item)
cur = self._head
per = None
if pos == 0: # 如果是往开头插入
node.next = self._head # 让新元素连接以前的节点
self._head = node # _head 连接新节点
return
if pos or pos > self.length(): # 如果在不存在的点插入
print(‘位置有误,重新输入!!!‘)
return
for i in range(pos): # for循环到插入的位置
per = cur
cur = cur.next
per.next = node
node.next = cur
# 删除指定节点
def remove(self, item):
cur = self._head
per = None
# 如果删的是第一个节点
if self._head.item == item: # 如果删的是第一个节点
self._head = cur.next # 让_head直接连接下一个节点
return
# 如果删不存在的节点
if not self.searchItem(item):
print(‘删除元素不存在!!!‘)
return
while cur:
per = cur
cur = cur.next
if cur.item == item:
break
per.next = cur.next
下一篇:Java类的成员-代码块