https://cloud.tencent.com/developer/article/1454690
侯哥的Python分享
# 创建节点
class Node(object):def __init__(self,item):self.element = itemself.next = None# 创建单链表类
class SingleLinkList(object):def __init__(self):self.header = Noneself.length = 0# 1、判断是否为空def is_empty(self):if self.header == None:return Trueelse:return False# 2、头部插入def add(self,node):if self.is_empty():self.header = nodeelse:node.next = self.headerself.header = node# currentNode = self.headerself.length += 1# 3、尾部插入def appent(self,node):currentNode = self.headerif self.is_empty():self.add(node)else:while (currentNode.next != None):currentNode = currentNode.nextcurrentNode.next = nodeself.length += 1# 4、指定位置插入def insert(self,node,index):currentNode = self.headerif index>self.length+1 or index<=0:print("你要插入的位置不对,请重现选择位置")if index == 1:self.add(node)elif index == 2:node.next = self.header.nextself.header.next = nodeself.length += 1else:for i in range(1,index-1):currentNode = currentNode.nextnode.next = currentNode.nextcurrentNode.next = nodeself.length += 1# 5、遍历def travel(self):currentNode = self.headerif self.length == 0:print("你要遍历的链表没有数据\n")else:print("你要遍历的链表里面的元素有:",end=" ")for i in  range(self.length):print("%s "%currentNode.element,end=" ")currentNode = currentNode.nextprint("\n")# 6、排序不用交换节点的位置,只需要交换节点上的数据值def list_sort(self):for i in range(0,self.length-1):currentNode = self.headerfor j in range(0,self.length-i-1):if  currentNode.element > currentNode.next.element:temp = currentNode.elementcurrentNode.element = currentNode.next.elementcurrentNode.next.element = tempcurrentNode = currentNode.next# 7、按索引删除def remove(self,index):if index<=0 or index>self.length:print("你输入的下标不对,请重新输入")returnelse:if index == 1:self.header = self.header.nextcurrentNode = self.headerelif index == 2:currentNode = self.headercurrentNode.next = currentNode.next.nextelse:currentNode = self.headerfor i in range(1,index-1):currentNode = currentNode.nextcurrentNode.next = currentNode.next.nextself.length -= 1# 8、查找是否包含,并返回下标def isContain(self,num):contain = 0currentNode = self.headerfor i in range(self.length):if currentNode.element == num:print("%d在链表中%d处\n"%(num,i))contain = 1currentNode = currentNode.nextif contain == 0:print("%d不在链表中\n"%num)# 9、根据下标找节点def searchNodeByIndex(self,index):currentNode = self.headerif index<=0 or index>self.length:print("你输入的下标不对,请重新输入\n")return 0else:for i in range(index-1):currentNode = currentNode.nextreturn currentNode# 10、根据下标修改节点的值def modifyByIndex(self,index,num):currentNode = self.headerif index<=0 or index>self.length:print("你输入的下标不对,请重新输入\n")else:for i in range(index-1):currentNode = currentNode.nextcurrentNode.element = numdef main():# 创建一个节点对象node1 = Node(1)# 创建一个单链表对象single_link_list = SingleLinkList()print("验证空链表的遍历")single_link_list.travel()print("验证头插")single_link_list.add(node1)single_link_list.travel()print("验证尾插")node2 = Node(2)single_link_list.appent(node2)single_link_list.travel()print("验证按位置插入")node3 = Node(3)single_link_list.insert(node3,1)single_link_list.travel()print("继续验证头插")node4 = Node(5)single_link_list.add(node4)single_link_list.travel()print("继续验证按位置插入")node5 = Node(4)single_link_list.insert(node5,4)single_link_list.travel()print("验证删除")single_link_list.remove(3)single_link_list.travel()print("验证查找一个节点是否在链表中")single_link_list.isContain(8)print("验证按下标查找节点")node = single_link_list.searchNodeByIndex(2)print("第二个节点的值为:%s"%node.element)print("\n验证排序")single_link_list.list_sort()single_link_list.travel()print("验证修改")single_link_list.modifyByIndex(2,10)single_link_list.travel()if __name__ == '__main__':main()验证空链表的遍历
你要遍历的链表没有数据验证头插
你要遍历的链表里面的元素有: 1  验证尾插
你要遍历的链表里面的元素有: 1  2  验证按位置插入
你要遍历的链表里面的元素有: 3  1  2  继续验证头插
你要遍历的链表里面的元素有: 5  3  1  2  继续验证按位置插入
你要遍历的链表里面的元素有: 5  3  1  4  2  验证删除
你要遍历的链表里面的元素有: 5  3  4  2  验证查找一个节点是否在链表中
8不在链表中验证按下标查找节点
第二个节点的值为:3验证排序
你要遍历的链表里面的元素有: 2  3  4  5  验证修改
你要遍历的链表里面的元素有: 2  10  4  5
https://cloud.tencent.com/developer/article/1454690
=========================================
优化说明:
1.	时间复杂度改进:
o	原append方法需要遍历整个链表,时间复杂度为O(n)
o	优化后append方法直接通过tail操作,时间复杂度降为O(1)
2.	空间复杂度:
o	只增加了一个tail指针,空间复杂度仍为O(1)
3.	边界情况处理:
o	空链表时tail为None
o	只有一个结点时header和tail指向同一个结点
o	删除尾结点时需要更新tail
4.	其他优势:
o	新增get_tail()方法可以直接获取尾结点
o	在需要频繁操作链表尾部时性能显著提升
这种优化特别适合需要频繁在链表尾部进行操作的应用场景,如实现队列等数据结构。
# 创建节点
class Node(object):def __init__(self,item):self.element = itemself.next = None# 创建单链表类
class SingleLinkList(object):def __init__(self):self.header = Noneself.tail = None  # 新增尾结点引用self.length = 0# 1、判断是否为空   def is_empty(self):return self.header is None# 2、头部插入 def add(self, node):if self.is_empty():self.header = nodeself.tail = node  # 链表为空时,头尾都指向新节点else:node.next = self.headerself.header = nodeself.length += 1# 3、尾部插入def append(self, node):  # 修正了原方法名拼写错误(appent->append)if self.is_empty():self.add(node)else:self.tail.next = node  # 直接通过tail添加self.tail = node      # 更新tailself.length += 1# 4、指定位置插入   def insert(self, node, index):if index > self.length + 1 or index <= 0:print("插入位置无效")returnif index == 1:self.add(node)elif index == self.length + 1:  # 尾部插入情况self.append(node)else:currentNode = self.headerfor _ in range(1, index-1):currentNode = currentNode.nextnode.next = currentNode.nextcurrentNode.next = nodeself.length += 1#  、按索引删除    def remove(self, index):if index <= 0 or index > self.length:print("删除位置无效")returnif index == 1:self.header = self.header.nextif self.length == 1:  # 如果删除后链表为空self.tail = Noneelse:currentNode = self.headerfor _ in range(1, index-1):currentNode = currentNode.nextcurrentNode.next = currentNode.next.nextif index == self.length:  # 如果删除的是尾结点self.tail = currentNodeself.length -= 1# 5、遍历def travel(self):currentNode = self.headerif self.length == 0:print("链表为空")else:print("链表元素:", end=" ")for _ in range(self.length):print(currentNode.element, end=" ")currentNode = currentNode.nextprint()def get_tail(self):return self.tail  # 新增方法,直接返回尾结点# 6、排序不用交换节点的位置,只需要交换节点上的数据值def list_sort(self):for i in range(0,self.length-1):currentNode = self.headerfor j in range(0,self.length-i-1):if  currentNode.element > currentNode.next.element:temp = currentNode.elementcurrentNode.element = currentNode.next.elementcurrentNode.next.element = tempcurrentNode = currentNode.next# 8、查找是否包含,并返回下标def isContain(self,num):contain = 0currentNode = self.headerfor i in range(self.length):if currentNode.element == num:print("%d在链表中%d处\n"%(num,i))contain = 1currentNode = currentNode.nextif contain == 0:print("%d不在链表中\n"%num)# 9、根据下标找节点def searchNodeByIndex(self,index):currentNode = self.headerif index<=0 or index>self.length:print("你输入的下标不对,请重新输入\n")return 0else:for i in range(index-1):currentNode = currentNode.nextreturn currentNode# 10、根据下标修改节点的值def modifyByIndex(self,index,num):currentNode = self.headerif index<=0 or index>self.length:print("你输入的下标不对,请重新输入\n")else:for i in range(index-1):currentNode = currentNode.nextcurrentNode.element = numif __name__ == '__main__':lst = SingleLinkList()print("空链表尾结点:", lst.get_tail())lst.add(Node(1))print("添加1后尾结点:", lst.get_tail().element)lst.append(Node(2))print("追加2后尾结点:", lst.get_tail().element)lst.insert(Node(3), 3)  # 在末尾插入print("插入3后尾结点:", lst.get_tail().element)lst.remove(3)  # 删除尾结点print("删除尾结点后新尾结点:", lst.get_tail().element)空链表尾结点: None
添加1后尾结点: 1
追加2后尾结点: 2
插入3后尾结点: 3
删除尾结点后新尾结点: 2开启新对话
单循环链表
class LNode:def __init__(self, elem, next_=None):self.elem = elemself.next = next_class LinkedListUnderflow(Exception):passclass LCList:def __init__(self):self._rear = Nonedef is_empty(self):return self._rear is Nonedef prepend(self, elem):p = LNode(elem)if self._rear is None:p.next = p self._rear = pelse:p.next = self._rear.nextself._rear.next = p  # Fixed typo: changed 'P' to 'p'def append(self, elem):self.prepend(elem)self._rear = self._rear.nextdef pop(self):if self._rear is None:raise LinkedListUnderflow("in pop of CLList")p = self._rear.nextif self._rear is p:self._rear = Noneelse:self._rear.next = p.nextreturn p.elemdef printall(self):if self.is_empty():returnp = self._rear.nextwhile True:print(p.elem, end='')if p is self._rear:breakp = p.nextprint(', ', end='')print()if __name__ == '__main__':# Create a new circular linked listclist = LCList()# Test is_empty on new listprint("Is empty?", clist.is_empty())  # Should print True# Append some elementsclist.append(1)clist.append(2)clist.append(3)# Prepend an elementclist.prepend(0)# Print all elementsprint("List elements:")clist.printall()  # Should print 0, 1, 2, 3# Test popprint("Popped:", clist.pop())  # Should pop 0print("After pop:")clist.printall()  # Should print 1, 2, 3# Pop remaining elementsprint("Popped:", clist.pop())print("Popped:", clist.pop())print("Popped:", clist.pop())# Test empty listprint("Is empty?", clist.is_empty())  # Should print Truetry:clist.pop()except LinkedListUnderflow as e:print("Error:", e)  # Should catch the underflow error
=========================================
Is empty? True
List elements:
0, 1, 2, 3
Popped: 0
After pop:
1, 2, 3
Popped: 1
Popped: 2
Popped: 3
Is empty? True
Error: in pop of CLList双循环链表:
class LNode:def __init__(self, elem, next_=None):self.elem = elemself.next = next_class LinkedListUnderflow(Exception):passclass DLNode(LNode):def __init__(self, elem, prev=None, next_=None):super().__init__(elem, next_)self.prev = prevclass LList1:def __init__(self):self._head = Noneself._rear = Nonedef is_empty(self):return self._head is Nonedef prepend(self, elem):pass  # To be overridden by DLListdef append(self, elem):pass  # To be overridden by DLListdef pop(self):pass  # To be overridden by DLListdef printall(self):p = self._headwhile p is not None:print(p.elem, end='')if p.next is not None:print(', ', end='')p = p.nextprint()class DLList(LList1):def __init__(self):super().__init__()def prepend(self, elem):p = DLNode(elem, None, self._head)if self._head is None:self._rear = pelse:self._head.prev = pself._head = pdef append(self, elem):p = DLNode(elem, self._rear, None)if self._head is None:self._head = pelse:self._rear.next = pself._rear = pdef pop(self):if self._head is None:raise LinkedListUnderflow("in pop of DLList")e = self._rear.elemself._rear = self._rear.previf self._rear is None:self._head = Noneelse:self._rear.next = Nonereturn edef pop_first(self):if self._head is None:raise LinkedListUnderflow("in pop_first of DLList")e = self._head.elemself._head = self._head.nextif self._head is None:self._rear = Noneelse:self._head.prev = Nonereturn edef printall_reverse(self):p = self._rearwhile p is not None:print(p.elem, end='')if p.prev is not None:print(', ', end='')p = p.prevprint()if __name__ == '__main__':# Create a new doubly linked listdlist = DLList()# Test is_empty on new listprint("Is empty?", dlist.is_empty())  # Should print True# Append some elementsdlist.append(1)dlist.append(2)dlist.append(3)# Prepend an elementdlist.prepend(0)# Print all elements forwardprint("List elements (forward):")dlist.printall()  # Should print 0, 1, 2, 3# Print all elements in reverseprint("List elements (reverse):")dlist.printall_reverse()  # Should print 3, 2, 1, 0# Test pop (removes from end)print("Popped from end:", dlist.pop())  # Should pop 3print("After pop from end:")dlist.printall()  # Should print 0, 1, 2# Test pop_first (removes from front)print("Popped from front:", dlist.pop_first())  # Should pop 0print("After pop from front:")dlist.printall()  # Should print 1, 2# Pop remaining elementsprint("Popped from end:", dlist.pop())print("Popped from end:", dlist.pop())# Test empty listprint("Is empty?", dlist.is_empty())  # Should print Truetry:dlist.pop()except LinkedListUnderflow as e:print("Error:", e)  # Should catch the underflow error=============================================
Is empty? True
List elements (forward):
0, 1, 2, 3
List elements (reverse):
3, 2, 1, 0
Popped from end: 3
After pop from end:
0, 1, 2
Popped from front: 0
After pop from front:
1, 2
Popped from end: 2
Popped from end: 1
Is empty? True
Error: in pop of DLList

双循环的反转与冒泡排序

class DLNode:def __init__(self, elem, prev=None, next_=None):self.elem = elemself.prev = prevself.next = next_class DLList:def __init__(self):self._head = Noneself._rear = Nonedef is_empty(self):return self._head is Nonedef prepend(self, elem):p = DLNode(elem, None, self._head)if self._head is None:self._rear = pp.next = pp.prev = pelse:p.next = self._headp.prev = self._rearself._head.prev = pself._rear.next = pself._head = pdef append(self, elem):p = DLNode(elem, self._rear, None)if self._head is None:self._head = pp.next = pp.prev = pelse:p.prev = self._rearp.next = self._headself._rear.next = pself._head.prev = pself._rear = pdef reverse(self):if self.is_empty() or self._head is self._rear:returncurrent = self._headwhile True:# 交换prev和next指针current.prev, current.next = current.next, current.prevcurrent = current.prev  # 移动到下一个节点if current is self._head:  # 循环结束条件break# 交换头尾指针self._head, self._rear = self._rear, self._headdef sort(self):if self.is_empty() or self._head is self._rear:returnswapped = Truestart = self._headwhile swapped:swapped = Falsecurrent = startwhile True:next_node = current.nextif next_node is start:  # 循环结束条件breakif current.elem > next_node.elem:# 交换数据current.elem, next_node.elem = next_node.elem, current.elemswapped = Truecurrent = next_nodedef print_forward(self):if self.is_empty():print("Empty list")returncurrent = self._headwhile True:print(current.elem, end=" ")current = current.nextif current is self._head:breakprint()def print_backward(self):if self.is_empty():print("Empty list")returncurrent = self._rearwhile True:print(current.elem, end=" ")current = current.previf current is self._rear:breakprint()# 测试代码
if __name__ == "__main__":dll = DLList()dll.append(3)dll.append(1)dll.append(4)dll.append(2)print("Original list (forward):")dll.print_forward()  # 3 1 4 2print("\nReversed list (forward):")dll.reverse()dll.print_forward()  # 2 4 1 3print("\nSorted list:")dll.sort()dll.print_forward()  # 1 2 3 4print("\nBackward traversal:")dll.print_backward()  # 4 3 2 1if current.elem > next_node.elem:# 交换数据current.elem, next_node.elem = next_node.elem, current.elemswapped = Truecurrent = next_nodedef print_forward(self):if self.is_empty():print("Empty list")returncurrent = self._headwhile True:print(current.elem, end=" ")current = current.nextif current is self._head:breakprint()def print_backward(self):if self.is_empty():print("Empty list")returncurrent = self._rearwhile True:print(current.elem, end=" ")current = current.previf current is self._rear:breakprint()# 测试代码
if __name__ == "__main__":dll = DLList()dll.append(3)dll.append(1)dll.append(4)dll.append(2)print("Original list (forward):")dll.print_forward()  # 3 1 4 2print("\nReversed list (forward):")dll.reverse()dll.print_forward()  # 2 4 1 3print("\nSorted list:")dll.sort()dll.print_forward()  # 1 2 3 4print("\nBackward traversal:")dll.print_backward()  # 4 3 2 1
Original list (forward):
3 1 4 2 Reversed list (forward):
2 4 1 3 Sorted list:
1 2 3 4 Backward traversal:
4 3 2 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916708.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916708.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916708.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter开发实战之CI/CD与发布流程

第12章:CI/CD与发布流程 在前面的章节中,我们学习了Flutter应用开发的各个方面,从基础UI构建到复杂的状态管理,从网络请求到本地存储。现在,我们将探讨一个同样重要但常被忽视的话题:如何将我们精心开发的应用高效、可靠地发布到各大应用商店。 想象一下,你花费了数月…

ElasticSearch 的3种数据迁移方案

在实际工作中&#xff0c;我们经常会遇到需要将自建的 Elasticsearch 迁移上云&#xff0c;或者迁移到其他 ES 集群的情况。这时&#xff0c;选择合适的数据迁移方案就显得尤为重要啦。今天就来给大家介绍三种常用的迁移方案&#xff0c;分别是 COS 快照、logstash 和 elastics…

MySQL 中的“双路排序”与“单路排序”:原理、判别与实战调优

一句话导读 ORDER BY 不能走索引时&#xff0c;MySQL 会在 Server 层做一次 filesort。内部实现分 单路&#xff08;全字段&#xff09; 与 双路&#xff08;rowid&#xff09; 两种&#xff1b;了解它们的触发条件、判别方法与调优思路&#xff0c;是 SQL 性能优化的必修课。一…

OpenLayers 综合案例-信息窗体-弹窗

看过的知识不等于学会。唯有用心总结、系统记录&#xff0c;并通过温故知新反复实践&#xff0c;才能真正掌握一二 作为一名摸爬滚打三年的前端开发&#xff0c;开源社区给了我饭碗&#xff0c;我也将所学的知识体系回馈给大家&#xff0c;助你少走弯路&#xff01; OpenLayers…

GaussDB 开发基本规范

1 集中式1.1数据库价值特性推荐特性分类特性列表说明表类型PARTITION表数据分区存储引擎行存储按行顺序存储表&#xff0c;建议点查&#xff0c;增删改操作较多场景下使用事务事务块显式启动事务单语句事务不显式启动事务&#xff0c;单语句即为事务扩容在线扩容扩节点和数据重…

工作中使用git可能遇到的场景

1.main历史发布版本出问题需要查看&#xff0c;怎么切换历史发布版本&#xff1f;git reset --hard commitid 更新本地库和代码2.A分支的代码已经做过一些功能&#xff0c;想迁移到B分支当前在A分支git checkout B &#xff08;切换到B分支&#xff09;git cherry-pick A的com…

【Spring AI】本地大型语言模型工具-Ollama

Ollama 是一个专注于在本地运行大型语言模型&#xff08;LLM&#xff09;的工具&#xff0c;支持多种开源模型&#xff08;如 Llama 3、Mistral、Gemma 等&#xff09;&#xff0c;提供简单的命令行和 API 接口。<dependency><groupId>org.springframework.ai</…

电机S加减速

STM32步进电机S型加减速算法_stm32___build__-2048 AI社区 以上&#xff0c;电机加减速说的非常清楚&#xff0c;收藏点赞&#xff01;

一、初识 Linux 与基本命令

作者&#xff1a;IvanCodes 日期&#xff1a;2025年7月28日 专栏&#xff1a;Linux教程 思维导图 一、Linux 简介 1.1 什么是 Linux? Linux 是一种自由、开源的类Unix操作系统内核&#xff0c;由林纳斯托瓦兹 (Linus Torvalds) 在1991年首次发布。我们通常所说的 “Linux 系统…

解决angular与jetty websocket 每30s自动断连的问题

背景&#xff1a;前端&#xff1a;angular 12&#xff0c;websocket接口由lib.dom.d.ts提供后端&#xff1a;java&#xff0c;websocket接口由jetty 12提供问题现象&#xff1a;前端连上server后&#xff0c;每隔30s就会断开&#xff0c;由于长时间空闲&#xff0c;会导致webso…

【机器学习深度学习】模型私有化部署与微调训练:赋能特定问题处理能力

目录 前言 一、私有化部署的背景&#xff1a;通用能力 ≠ 企业实用 暴露问题 二、微调训练的核心目的 2.1 动作一&#xff1a;私有化部署&#xff08;Private Deployment&#xff09; 2.2 动作二&#xff1a;领域微调&#xff08;Domain Fine-Tuning&#xff09; 2.3 微…

Seq2Seq学习笔记

Seq2Seq模型概述Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;是一种基于深度学习的序列生成模型&#xff0c;主要用于处理输入和输出均为序列的任务&#xff0c;如机器翻译、文本摘要、对话生成等。其核心思想是将可变长度的输入序列映射为另一个可变长度的输出序列。…

react useId

useId useId 是 React 18 引入的一个内置 Hook&#xff0c;用于生成唯一且稳定的 ID &#xff0c; 主要用于&#xff0c;解决在客户端和服务器端渲染&#xff08;SSR&#xff09;时&#xff0c;动态生成 ID 可能导致的冲突问题&#xff1b; 特别适合用于&#xff0c;需要关联 H…

排水管网实时监测筑牢城市安全防线

排水管网的实时监测工作&#xff0c;强调其对于保障城市安全的重要作用。“排水管网”明确了具体的关注对象&#xff0c;它是城市基础设施的重要组成部分&#xff0c;承担着雨水、污水排放等关键功能。“实时监测”突出了监测的及时性和持续性&#xff0c;意味着能够随时获取排…

SZU大学物理实验报告|电位差计

写在前面&#xff1a;博文里放图片&#xff0c;主要省去了对文档的排版时间&#xff0c;实验还是要自己做的&#xff0c;反正都要去实验室上课&#xff0c;顺带锻炼下动手能力。有些结果是实验手写的&#xff0c;所以看不到&#xff0c;有结果的可以对下结果差的不太多就行&…

RoPE简单解析

文章目录简介拆解一些tricks简介 因为RoPE的优异性能&#xff0c;其已成为各种大模型中位置编码的首选&#xff0c;包括多模态模型&#xff1b;在一些多模态模型或视频理解模型中&#xff0c;甚至会用到多维度RoPE。虽然RoPE已广泛应用&#xff0c;之前也看了不少针对其原理解…

windows 获取 APK 文件的包名和启动 Activity 名称

使用 aapt 命令确保环境变量配置正确&#xff1a;首先需要确保你的系统环境变量中包含了 Android SDK 的 build-tools 目录路径。这是因为 aapt 工具位于该目录下。运行命令&#xff1a; 打开命令提示符&#xff08;CMD&#xff09;&#xff0c;然后输入以下命令来查看 APK 的详…

【Mac版】Linux 入门命令行快捷键+联想记忆

Linux Mac 用户终端命令行快捷键 符号速查全解作为一个刚接触 Linux 和终端的 macOS 用户&#xff0c;常常被命令行的各种快捷键和符号弄得头晕脑胀&#xff0c;本文将带你系统地掌握命令行中最常用的快捷键和符号&#xff0c;并通过逻辑联想帮助你轻松记住每一个组合。一、基…

AUTOSAR Mcal Dio - 模块介绍 + EB配置工具介绍

文章目录1. 模块简介2. 主要功能3. 缩略语4. API接口5. 功能介绍5.1. ChannelGroup5.2. Dio_MaskedWritePort6. 序列图6.1.读GPIO电平6.2. 设置GPIO电平7. EB 工具配置7.1.General7.2.DioPort8. 参考资料1. 模块简介 Dio&#xff0c;全称“Digital Input Output”。Dio模块&am…

ICT模拟零件测试方法--晶体管测试

ICT模拟零件测试方法–晶体管测试 文章目录ICT模拟零件测试方法--晶体管测试晶体管测试晶体管测试配置晶体管测试配置晶体管测量选项晶体管测试 i3070 在线测试软件为每个晶体管提供两种测试&#xff1a; 使用二极管测试对晶体管的两个 PN 结进行测试。这是检查设备存在的快速…