python单向链表的实现_python实现单链表

学过数据结构的都知道,单链表是一种简单的数据结构,很常用。如果学会使用单链表后,在学双向链表,就很容易上手。在高级语言中,集合有的就是用双链表实现的。今天,我先完成单链表的实现,以后在写其他的。 如果有差错,请指正。

# -*- coding: cp936 -*-

#---------------------------------------------

#

#author chile

#version 1.0

#date 2014-02-12

#desc 单链表集合

#

#

#---------------------------------------------

class LinkList:

def __init__(self):

self.root = LinkList.Entry()

self.entry = self.root

self.list = list()

self.tally = 0

#新增的数据都是插入在尾部

def add(self,value):

temp = self.Entry(value = value)

self.entry.next = temp

self.entry = temp

self.tally += 1

#在头部添加

def addFirst(self,value):

temp = self.Entry(value = value)

entry = self.root.next #获取头部的第一个节点

temp.next = entry #新增节点下一个节点指向当前第一个节点

self.root.next = temp #将头部指向新增的节点

self.tally += 1

def get(self,index):

if index > self.tally or index < 0:

return #其实应该抛出异常

mid = self.tally / 2

e = self.root.next

if index < mid:

for i in range(index):

e = e.next

else:

for i in range(self.tally):

if (i == index):

break

e = e.next

return e.value

def getLast(self):

return self.entry.value

def getFirst(self):

return self.root.next.value

def remove(self,value):

_temp = self.root.next

if _temp.value == value:

self.root.next = _temp.next

self.tally -= 1

def removeFirst(self):

root = self.root

entry = root.next;

root.next = entry.next

self.tally -= 1

def size(self):

return self.tally

def all(self):

self.list = list()

self.iterator(self.root.next)

return self.list

def iterator(self,entry):

if entry != None:

self.list.append(entry.value)

self.iterator(entry.next)

#内部类 用于存放节点的值,以及下个点的引用

class Entry:

def __init__(self, next = None , value = None):

self.next = next

self.value = value

link = LinkList()

link.add(1)

link.add(2)

link.addFirst(3)

link.add(5)

link.add(4)

link.add(7)

print link.all()

link.removeFirst()

print link.all()

print link.size()

print link.get(1)

print link.get(4)

print link.all()

print link.getFirst()

print link.getLast()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表中的节点按照顺序连接在一起,形成一个链式结构。 下面是Python单向链表的基本实现方式: 1. 定义节点类:首先定义一个节点类,包含两个属性:数据元素和指向下一个节点的指针。 ```python class Node: def __init__(self, data): self.data = data self.next = None ``` 2. 定义链表类:链表类包含若干个节点,以及对链表进行操作的方法。 ```python class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if self.head is None: self.head = new_node else: current = self.head while current.next: current = current.next current.next = new_node def insert(self, data, position): new_node = Node(data) if position == 0: new_node.next = self.head self.head = new_node else: current = self.head for _ in range(position - 1): if current.next is None: raise IndexError("Index out of range") current = current.next new_node.next = current.next current.next = new_node def delete(self, position): if self.head is None: raise IndexError("Index out of range") if position == 0: self.head = self.head.next else: current = self.head for _ in range(position - 1): if current.next is None: raise IndexError("Index out of range") current = current.next if current.next is None: raise IndexError("Index out of range") current.next = current.next.next def get(self, position): if self.head is None: raise IndexError("Index out of range") current = self.head for _ in range(position): if current.next is None: raise IndexError("Index out of range") current = current.next return current.data def size(self): count = 0 current = self.head while current: count += 1 current = current.next return count ``` 以上是一个简单的Python单向链表实现,包括了向链表末尾添加节点、在指定位置插入节点、删除指定位置的节点、获取指定位置的节点值以及获取链表长度等基本操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值