python有序列表无序列表区别_用Python链表实现有序表与无序表

本文介绍了如何使用Python实现无序列表和有序列表的数据结构,包括链表节点的定义、无序列表的add、size、search、remove方法以及有序列表的搜索和添加操作。详细阐述了链表的复杂度分析,并提供了具体实现代码。
摘要由CSDN通过智能技术生成

用Python链表实现有序表与无序表

《数据结构与算法》MOOC(北大地空)课堂笔记

2020.4

by dlnb526

啥是链表

链表,顾名思义,顾名思义,链表像锁链一样,由一节节节点连在一起,组成一条数据链。

为什么要使用链表?

在之前用了python中的列表(list)来实现各种数据结构,然而有的语言可能并没有提供像python的列表一样强大的功能,我们必须要自己实现列表。

无序列表

概述

列表可以看作是一个无序的列表。

无序,也就是说它里面的元素没有一定的顺序,比如这样一个列表:

a = [1,2,'ads',54,32]

这里面的每个元素没有按照一定的规则排序,所以就叫无序。

无序列表应该有以下的方法

list() 创建一个新的空列表。它不需要参数,而返回一个空列表。

add(item) 将新项添加到列表,没有返回值。假设元素不在列表中。

remove(item) 从列表中删除元素。需要一个参数,并会修改列表。此处假设元素在列表中。

search(item) 搜索列表中的元素。需要一个参数,并返回一个布尔值。

isEmpty() 判断列表是否为空。不需要参数,并返回一个布尔值。

size() 返回列表的元素数。不需要参数,并返回一个整数。

append(item) 在列表末端添加一个新的元素。它需要一个参数,没有返回值。假设该项目不在列表中。

index(item) 返回元素在列表中的位置。它需要一个参数,并返回位置索引值。

此处假设该元素原本在列表中。

insert(pos,item) 在指定的位置添加一个新元素。它需要两个参数,没有返回值。假设该元素在列表中并不存在,并且列表有足够的长度满足参数提供的索引需要。

pop() 从列表末端移除一个元素并返回它。它不需要参数,返回一个元素。假设列表至少有一个元素。

pop(pos) 从指定的位置移除列表元素并返回它。它需要一个位置参数,并返回一个元素。假设该元素在列表中。

节点

为了实现无序列表,我们采用链表的方式。

链表最基本的元素是节点。

每个节点对象必须持有至少两条信息。

首先,节点必须包含列表元素本身。我们将这称为该节点的“数据区”(data field)。

此外,每个节点必须保持到下个节点的引用。

如果没有下一个节点,那我们就记录为None

class Node:#节点这个类~

def __init__(self,initdata):

self.data = initdata

self.next = None#初始化的时候头节点后面没有节点了

def getData(self):

return self.data #节点可以获取自身数据

def getNext(self):

return self.next #节点可以获取指向的下一个节点

def setData(self,newdata):

self.data = newdata

def setNext(self,newnext):#节点可以对下一个节点进行更新

self.next = newnext

上面我们就把一个节点建立起来了,那如何把节点连接起来呢。

无序表的链表实现

操作举例

1. 添加数据项add

通过之前的方式建立了一个节点,如果初始化它我们知道他是一个在开头的节点,后面是None.由于无序表是从表头开始逐个向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值