数据结构与算法-顺序表和链表
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类的成员-代码块