四种常见的链表包括:单向链表,单向循环链表,双向链表,双向循环链表。

要实现的链表操作包括

- is_empty() 判断链表是否为空

- length() 求链表长度

- traversing() 遍历所有节点元素

- add() 头部添加节点

- append() 尾部添加节点

- insert(pos, item) 某个位置插入节点

- remove(item) 删除一个节点

- search(item) 查找某个节点是否存在

先初始化节点

class Node(object):"""单节点"""def __init__(self, elem):self.elem = elemself.next = Noneclass DoubleNode(Node):"""双节点"""def __init__(self, elem):super(DoubleNode, self).__init__(elem)self.prev = None

四种链表的实现中,每一个类都继承自object, self.__head是私有变量,不能被子类或外部调用。 ```python [s-单向链表] class SingleLinkList(object): """单向链表"""

def __init__(self, node=None):self.head = nodedef is_empty(self) -> bool:"""链表是否为空 O(1)"""return self.head is Nonedef length(self) -> int:"""链表长度 O(n)"""count, cur = 0, self.headwhile cur is not None:cur = cur.next  # 不要写错cur = self.head.next, self.__next不是活动指针count += 1return countdef traversing(self) -> '':"""遍历所有节点 O(n)"""cur = self.head  # 不是 self._headwhile cur is not None:print(cur.elem, end=' ')cur = cur.nextreturn ''def add(self, item) -> None:"""头部添加节点 O(1)"""node = Node(item)node.next = self.headself.head = nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = Node(item)cur = self.headif self.is_empty():self.head = nodeelse:while cur.next is not None:cur = cur.nextcur.next = nodedef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = Node(item)count, cur = 1, self.headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextcur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""pre, cur = None, self.headwhile cur is not None:if cur.elem == item:if cur == self.head:self.head = cur.nextbreak  # 只remove第一个元素pre.next = cur.nextbreakpre = curcur = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""cur = self.headwhile cur is not None:if cur.elem == item:return Truecur = cur.nextreturn False
```python [s-单向循环链表]
class SingleCycleLinkList(object):"""单向循环链表"""def __init__(self, node=None):self.__head = nodeif node:node.next = nodedef is_empty(self) -> bool:"""链表是否为空 O(1)"""return self.__head is Nonedef length(self) -> int:"""链表长度 O(n)"""if self.is_empty():return 0count, cur = 1, self.__headwhile cur.next != self.__head:cur = cur.next  # 不要写错cur = self.__head.next, self.__next不是活动指针count += 1return countdef transverse(self) -> '':"""遍历所有节点 O(n)"""if not self.is_empty():cur = self.__head  # 不是 self._headwhile cur.next != self.__head:print(cur.elem, end=' ')cur = cur.nextprint(cur.elem, end=' ')return ''def add(self, item) -> None:"""头部添加节点 O(n)"""node = Node(item)if self.is_empty():self.__head = nodenode.next = nodeelse:cur = self.__headwhile cur.next != self.__head:cur = cur.next# 退出while循环之后cur指向尾结点node.next = self.__headself.__head = nodecur.next = self.__headdef append(self, item) -> None:"""尾部添加节点 O(n)"""node = Node(item)if self.is_empty():self.__head = nodenode.next = nodeelse:cur = self.__headwhile cur.next != self.__head:cur = cur.nextcur.next = nodenode.next = self.__headdef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = Node(item)count, cur = 1, self.__headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextcur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""if self.is_empty():returnpre, cur = None, self.__headwhile cur.next != self.__head:if cur.elem == item:# 移除头结点if cur == self.__head:rear = self.__headwhile rear.next != self.__head:rear = rear.nextself.__head = cur.nextrear.next = self.__head# 移除中间节点else:pre.next = cur.nextreturn  # 结束。只remove第一个元素pre = curcur = cur.next# 移除尾结点if cur.elem == item:if cur == self.__head:self.__head = Noneelse:pre.next = self.__head  # 或者 pre.next = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""if self.is_empty():return Falseelse:cur = self.__headwhile cur.next != self.__head:if cur.elem == item:return Truecur = cur.nextreturn cur.elem == item

```python [s-双向链表] class DoubleLinkList(object): """双向链表"""

def __init__(self, node=None):self.__head = nodedef is_empty(self) -> bool:"""链表是否为空 O(1)"""return self.__head is Nonedef length(self) -> int:"""链表长度 O(n)"""count, cur = 0, self.__headwhile cur is not None:cur = cur.next  # 不要写错cur = self.__head.next, self.__next不是活动指针count += 1return countdef transverse(self) -> '':"""遍历所有节点 O(n)"""cur = self.__head  # 不是 self._headwhile cur is not None:print(cur.elem, end=' ')cur = cur.nextreturn ''def add(self, item) -> None:"""头部添加节点 O(1)"""node = DoubleNode(item)node.next = self.__headself.__head = nodeif node.next:  # 当原链表为空时node.next.prev = nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = DoubleNode(item)cur = self.__headif self.is_empty():self.__head = nodeelse:while cur.next is not None:cur = cur.nextcur.next = nodenode.prev = curdef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = DoubleNode(item)count, cur = 1, self.__headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextnode.prev = curcur.next.prev = nodecur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""cur = self.__headwhile cur is not None:if cur.elem == item:if cur == self.__head:self.__head = cur.nextif self.__head:  # 只有一个节点的特殊情况cur.next.prev = Noneelse:cur.prev.next = cur.nextif cur.next:cur.next.prev = cur.prevbreak  # 只remove第一个元素cur = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""cur = self.__headwhile cur is not None:if cur.elem == item:return Truecur = cur.nextreturn False
```python [s-双向循环链表]
class DoubleCycleLinkList(object):"""双向循环链表"""def __init__(self, node=None):self.__head = nodeif node:node.next = nodenode.prev = nodedef is_empty(self) -> bool:"""链表是否为空 O(1)"""return self.__head is Nonedef length(self) -> int:"""链表长度 O(n)"""if self.is_empty():return 0count, cur = 1, self.__headwhile cur.next != self.__head:cur = cur.next  # 不要写错cur = self.__head.next, self.__next不是活动指针count += 1return countdef transverse(self) -> '':"""遍历所有节点 O(n)"""if not self.is_empty():cur = self.__head  # 不是 self._headwhile cur.next != self.__head:print(cur.elem, end=' ')cur = cur.nextprint(cur.elem, end=' ')return ''def add(self, item) -> None:"""头部添加节点 O(n)"""node = DoubleNode(item)if self.is_empty():self.__head = nodenode.next = nodenode.prev = nodeelse:cur = self.__headwhile cur.next != self.__head:cur = cur.next# 退出while循环之后cur指向尾结点,双向循环链表需要改动5个指针node.next = self.__head  # 1.node.next指向原来的头结点node.prev = cur  # 2.node.prev指向尾结点,当前cur指向的节点cur.next.prev = node  # 3.原来头结点的prev指向要插入的nodeself.__head = node  # 4.self.__head指向要插入的nodecur.next = node  # 5.尾结点的next指向要插入的nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = DoubleNode(item)if self.is_empty():self.__head = nodenode.next = nodenode.prev = nodeelse:cur = self.__head# 退出while循环之后cur指向尾结点,双向循环链表需要改动4个指针while cur.next != self.__head:cur = cur.nextcur.next.prev = node  # 1.原来头结点的.prev指向要插入的nodecur.next = node  # 2.原来尾结点.next指向要插入的nodenode.prev = cur  # 3.node.prev指向原来的尾节点node.next = self.__head  # 4.node.next指向头结点def insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = DoubleNode(item)count, cur = 1, self.__headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextnode.prev = curcur.next.pre = nodecur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""if self.is_empty():returncur = self.__headwhile cur.next != self.__head:if cur.elem == item:# 移除头结点if cur == self.__head:cur.prev.next = cur.nextcur.next.prev = cur.prevself.__head = cur.next# 移除中间节点else:cur.prev.next = cur.nextcur.next.prev = cur.prevreturn  # 结束。只remove第一个元素cur = cur.next# 移除尾结点if cur.elem == item:if cur == self.__head:  # 当链表只有一个节点时self.__head = Noneelse:cur.next.prev = cur.prevcur.prev.next = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""if self.is_empty():return Falseelse:cur = self.__headwhile cur.next != self.__head:if cur.elem == item:return Truecur = cur.nextreturn cur.elem == item

在以上四种链表的实现中,可以发现有的类方法代码是重复的,具体重复的方法如下: - 所有的is_empty()方法都一样 - 双向链表的length(), traversing(), search(item)实现与单向链表 - 双向循环链表的length(), traversing(), search(item)实现与单向循环链表一样 因此,我们可以使用Python中类的特性:继承和多态 来简化代码,使用了继承之后把self.__head改成self.head

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# __author__ = 'zhao zi yang'class Node(object):"""单节点"""def __init__(self, elem):self.elem = elemself.next = Noneclass DoubleNode(Node):"""双节点"""def __init__(self, elem):super(DoubleNode, self).__init__(elem)self.prev = Noneclass SingleLinkList(object):"""单链表"""def __init__(self, node=None):self.head = nodedef is_empty(self) -> bool:"""链表是否为空 O(1)"""return self.head is Nonedef length(self) -> int:"""链表长度 O(n)"""count, cur = 0, self.headwhile cur is not None:cur = cur.next  # 不要写错cur = self.head.next, self.__next不是活动指针count += 1return countdef traversing(self) -> '':"""遍历所有节点 O(n)"""cur = self.head  # 不是 self._headwhile cur is not None:print(cur.elem, end=' ')cur = cur.nextreturn ''def add(self, item) -> None:"""头部添加节点 O(1)"""node = Node(item)node.next = self.headself.head = nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = Node(item)cur = self.headif self.is_empty():self.head = nodeelse:while cur.next is not None:cur = cur.nextcur.next = nodedef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = Node(item)count, cur = 1, self.headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextcur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""pre, cur = None, self.headwhile cur is not None:if cur.elem == item:if cur == self.head:self.head = cur.nextbreak  # 只remove第一个元素pre.next = cur.nextbreakpre = curcur = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""cur = self.headwhile cur is not None:if cur.elem == item:return Truecur = cur.nextreturn Falseclass SingleCycleLinkList(SingleLinkList):"""单向循环链表"""def __init__(self, node=None):if node:node.next = nodesuper(SingleCycleLinkList, self).__init__(node=node)def length(self) -> int:"""链表长度 O(n)"""if self.is_empty():return 0count, cur = 1, self.headwhile cur.next != self.head:cur = cur.next  # 不要写错cur = self.head.next, self.__next不是活动指针count += 1return countdef traversing(self) -> '':"""遍历所有节点 O(n)"""if not self.is_empty():cur = self.head  # 不是 self._headwhile cur.next != self.head:print(cur.elem, end=' ')cur = cur.nextprint(cur.elem, end=' ')return ''def add(self, item) -> None:"""头部添加节点 O(n)"""node = Node(item)if self.is_empty():self.head = nodenode.next = nodeelse:cur = self.headwhile cur.next != self.head:cur = cur.next# 退出while循环之后cur指向尾结点node.next = self.headself.head = nodecur.next = self.headdef append(self, item) -> None:"""尾部添加节点 O(n)"""node = Node(item)if self.is_empty():self.head = nodenode.next = nodeelse:cur = self.headwhile cur.next != self.head:cur = cur.nextcur.next = nodenode.next = self.headdef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = Node(item)count, cur = 1, self.headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextcur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""if self.is_empty():returnpre, cur = None, self.headwhile cur.next != self.head:if cur.elem == item:# 移除头结点if cur == self.head:rear = self.headwhile rear.next != self.head:rear = rear.nextself.head = cur.nextrear.next = self.head# 移除中间节点else:pre.next = cur.nextreturn  # 结束。只remove第一个元素pre = curcur = cur.next# 移除尾结点if cur.elem == item:if cur == self.head:self.head = Noneelse:pre.next = self.head  # 或者 pre.next = cur.nextdef search(self, item) -> bool:"""查找节点是否存在 O(n)"""if self.is_empty():return Falseelse:cur = self.headwhile cur.next != self.head:if cur.elem == item:return Truecur = cur.nextreturn cur.elem == itemclass DoubleLinkList(SingleLinkList):"""双链表"""def add(self, item) -> None:"""头部添加节点 O(1)"""node = DoubleNode(item)node.next = self.headself.head = nodeif node.next:  # 当原链表为空时node.next.prev = nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = DoubleNode(item)cur = self.headif self.is_empty():self.head = nodeelse:while cur.next is not None:cur = cur.nextcur.next = nodenode.prev = curdef insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = DoubleNode(item)count, cur = 1, self.headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextnode.prev = curcur.next.prev = nodecur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""cur = self.headwhile cur is not None:if cur.elem == item:if cur == self.head:self.head = cur.nextif self.head:  # 只有一个节点的特殊情况cur.next.prev = Noneelse:cur.prev.next = cur.nextif cur.next:cur.next.prev = cur.prevbreak  # 只remove第一个元素cur = cur.nextclass DoubleCycleLinkList(SingleCycleLinkList):"""双向循环链表"""def __init__(self, node=None):if node:node.next = nodenode.prev = nodesuper(DoubleCycleLinkList, self).__init__(node=node)def add(self, item) -> None:"""头部添加节点 O(n)"""node = DoubleNode(item)if self.is_empty():self.head = nodenode.next = nodenode.prev = nodeelse:cur = self.headwhile cur.next != self.head:cur = cur.next# 退出while循环之后cur指向尾结点,双向循环链表需要改动5个指针node.next = self.head  # 1.node.next指向原来的头结点node.prev = cur  # 2.node.prev指向尾结点,当前cur指向的节点cur.next.prev = node  # 3.原来头结点的prev指向要插入的nodeself.head = node  # 4.self.head指向要插入的nodecur.next = node  # 5.尾结点的next指向要插入的nodedef append(self, item) -> None:"""尾部添加节点 O(n)"""node = DoubleNode(item)if self.is_empty():self.head = nodenode.next = nodenode.prev = nodeelse:cur = self.head# 退出while循环之后cur指向尾结点,双向循环链表需要改动4个指针while cur.next != self.head:cur = cur.nextcur.next.prev = node  # 1.原来头结点的.prev指向要插入的nodecur.next = node  # 2.原来尾结点.next指向要插入的nodenode.prev = cur  # 3.node.prev指向原来的尾节点node.next = self.head  # 4.node.next指向头结点def insert(self, position: int, item) -> None:"""节点插入到某个位置 O(n):param position: 0表示第1个位置:param item::return: None"""if position <= 0:self.add(item)elif position >= self.length():self.append(item)else:node = DoubleNode(item)count, cur = 1, self.headwhile count < position:cur = cur.nextcount += 1node.next = cur.nextnode.prev = curcur.next.pre = nodecur.next = nodedef remove(self, item) -> None:"""删除链表中的一个节点 O(n)"""if self.is_empty():returncur = self.headwhile cur.next != self.head:if cur.elem == item:# 移除头结点if cur == self.head:cur.prev.next = cur.nextcur.next.prev = cur.prevself.head = cur.next# 移除中间节点else:cur.prev.next = cur.nextcur.next.prev = cur.prevreturn  # 结束。只remove第一个元素cur = cur.next# 移除尾结点if cur.elem == item:if cur == self.head:  # 当链表只有一个节点时self.head = Noneelse:cur.next.prev = cur.prevcur.prev.next = cur.nextif __name__ == '__main__':print("----single_link_list-----")single_link_list = SingleLinkList()single_link_list.remove('test')print(single_link_list.is_empty(), single_link_list.length())single_link_list.insert(-1, 'zhao')print(single_link_list.is_empty(), single_link_list.length())single_link_list.insert(3, 'zi')print(single_link_list.length())single_link_list.append('yang')single_link_list.add("head")single_link_list.insert(4, "tail")print(single_link_list.traversing())single_link_list.remove(1)print(single_link_list.traversing())single_link_list.remove("head")print(single_link_list.traversing())single_link_list.remove("tail")print(single_link_list.traversing())single_link_list.remove('zi')print(single_link_list.traversing())print("n----single_cycle_link_list-----")single_cycle_link_list = SingleCycleLinkList()single_cycle_link_list.remove('test')print(single_cycle_link_list.is_empty(), single_cycle_link_list.length())single_cycle_link_list.insert(-1, 'zhao')print(single_cycle_link_list.is_empty(), single_cycle_link_list.length())single_cycle_link_list.insert(3, 'zi')print(single_cycle_link_list.length())single_cycle_link_list.append('yang')single_cycle_link_list.add("head")single_cycle_link_list.insert(4, "tail")print(single_cycle_link_list.traversing())single_cycle_link_list.remove(1)print(single_cycle_link_list.traversing())single_cycle_link_list.remove("head")print(single_cycle_link_list.traversing())single_cycle_link_list.remove("tail")print(single_cycle_link_list.traversing())single_cycle_link_list.remove('zi')print(single_cycle_link_list.traversing())print("n----double_link_list-----")double_link_list = DoubleLinkList()double_link_list.remove('test')print(double_link_list.is_empty(), double_link_list.length())double_link_list.insert(-1, 'zhao')print(double_link_list.is_empty(), double_link_list.length())double_link_list.insert(3, 'zi')print(double_link_list.length())double_link_list.append('yang')double_link_list.add("head")double_link_list.insert(4, "tail")print(double_link_list.traversing())double_link_list.remove(1)print(double_link_list.traversing())double_link_list.remove("head")print(double_link_list.traversing())double_link_list.remove("tail")print(double_link_list.traversing())double_link_list.remove('zi')print(double_link_list.traversing())print("n----double_cycle_link_list-----")double_cycle_link_list = DoubleCycleLinkList()double_cycle_link_list.remove('test')print(double_cycle_link_list.is_empty(), double_cycle_link_list.length())double_cycle_link_list.insert(-1, 'zhao')print(double_cycle_link_list.is_empty(), double_cycle_link_list.length())double_cycle_link_list.insert(3, 'zi')print(double_cycle_link_list.length())double_cycle_link_list.append('yang')double_cycle_link_list.add("head")double_cycle_link_list.insert(4, "tail")print(double_cycle_link_list.traversing())double_cycle_link_list.remove(1)print(double_cycle_link_list.traversing())double_cycle_link_list.remove("head")print(double_cycle_link_list.traversing())double_cycle_link_list.remove("tail")print(double_cycle_link_list.traversing())double_cycle_link_list.remove('zi')print(double_cycle_link_list.traversing())

结果运行如下:

----single_link_list-----
True 0
False 1
2
head zhao zi yang tail
head zhao zi yang tail
zhao zi yang tail
zhao zi yang
zhao yang ----single_cycle_link_list-----
True 0
False 1
2
head zhao zi yang tail
head zhao zi yang tail
zhao zi yang tail
zhao zi yang
zhao yang ----double_link_list-----
True 0
False 1
2
head zhao zi yang tail
head zhao zi yang tail
zhao zi yang tail
zhao zi yang
zhao yang ----double_cycle_link_list-----
True 0
False 1
2
head zhao zi yang tail
head zhao zi yang tail
zhao zi yang tail
zhao zi yang
zhao yang

微信公众号:寸土币争 ID: bbcoins

python 释放链表节点_四种常见链表的实现及时间复杂度分析(Python3版)相关推荐

  1. python遍历链表_四种常见链表的实现及时间复杂度分析(Python3版)

    class Node(object): """单节点""" def __init__(self, elem): self.elem = el ...

  2. java post 多个参数_四种常见的post请求中的参数形式

    1).HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:状态行.请求头.消息主体. 2).协议规定 POST 提交的数据必须放在 ...

  3. EZEMC测试软件_四种常见的EMC仿真软件介绍

    EMC仿真软件能够为我们提供了一个非常有效的高频和高速电磁仿真设计工具,它集高速电路建模.仿真和优化为一体,用仿真代替实验,可以快速的帮助工程师完成高速电路EMC设计,实现信号完整性,减少研发费用,缩 ...

  4. mysql四种常用的索引_四种常见的索引类型

    主键索引:数据记录里面不能有 null,数据内容不能重复,在一张表里面不能有 多个主键索引. 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为 n ...

  5. python下载文件损坏_四种方法 恢复损坏的Excel文档

    打开一个以前编辑好的Excel工作簿,却发现内容混乱,无法继续进行编辑,而且还不能够进行打印.这是很多朋友在处理Excel文件时都可能会遇到的一个问题,面对这种情况时,我们应该怎么办呢? 出现上述情况 ...

  6. 转载:JSON技术的调研报告(四种常见的JSON格式对比及分析)

    转载自地址:http://www.cnblogs.com/kunpengit/p/4001680.html 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最 ...

  7. JSON技术的调研报告(四种常见的JSON格式对比及分析)

    https://www.cnblogs.com/renmengkai/p/9183775.html

  8. python单向认证_使用Python进行单向方差分析的四种方法

    python单向认证 The current post will focus on how to carry out between-subjects ANOVA using Python. As m ...

  9. 中文新闻分类 数据集_最新开源LiDAR数据集LSOOD:四种常见的室外物体分类

    原标题:最新开源LiDAR数据集LSOOD:四种常见的室外物体分类 标题:最新开源LiDAR数据集LSOOD:四种常见的室外物体分类 作者:Y Tian 来源: LSOOD数据集 LSOOD数据集(L ...

最新文章

  1. 这三所985,博士生毕业,可能不再要求发表论文!
  2. 用jiebaR分析比特币的文章
  3. Android中的Broadcast Action大全
  4. scp瓶中船是什么梗_早安打工人是什么梗?
  5. JDK帮助文档无法打开的常见问题和解决办法
  6. mysql 5.7.21没有64位_数据库MySQL5.7.21win64位安装配置
  7. 1212 无向图最小生成树
  8. DTU有什么用?工业级DTU的特点是啥?
  9. val什么意思vb中的属性值_VB语言中的val()函数是什么意思?如何使用?
  10. Cheat Engine游戏脚本修改器通关教程(脑残版Step1-Step8)
  11. cogs 2. 旅行计划
  12. java网络编程1-查询Internet地址
  13. IT架构师_隽语集(Design Thinking _0101)
  14. pythoon_interview_redit
  15. Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
  16. 关于8月31日维基解密被攻击的观察与分析
  17. 未能加载 mysql.data_连接MySQL 提示错误”未能加载文件或程序集“MySql.Data, Version=5.1.4.0, Culture=neutral,……..” | 学步园...
  18. c++ stl库中begin()和end()的区别
  19. php中curl的详细解说
  20. 华硕ASUS-X53S拆机升级

热门文章

  1. WPF TreeView 绑定(demo 转)
  2. JavaScript tab页
  3. Educational Codeforces Round 47
  4. C++ lower_bound 与 upper_bound 函数
  5. JavaWeb:实现文件上传与下载
  6. 当前页面跳转网页,新打开和在本页面打开
  7. 第六章 Android应用的生命周期
  8. 常见网站CSS样式重置
  9. Python:我可以使用类变量作为线程锁吗?
  10. oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开