`
lanqiu17
  • 浏览: 17720 次
社区版块
存档分类
最新评论

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()

 

分享到:
评论

相关推荐

    python实现的单链表

    下面我们将深入探讨如何在Python中实现单链表,包括链表的初始化、增删改查以及链表的合并。 首先,我们创建一个名为`Node`的类,用于表示链表中的每个节点。这个类通常包含两个属性:`data`存储节点的数据,`next`...

    Python+单链表的基本操作代码

    Python实现单链表,适合初学者。 使用Python编程链表数据结构,可以使用类来实现单链表的基本操作,如下所示: # 这个程序定义了两个类:Node和LinkedList。 # Node类用于表示单链表中的每个节点,包含数据和指向下...

    Python实现单链表、双链表、循环单链表、循环双链表、顺序表相关操作

    本文将深入探讨Python中四种不同类型的链表——单链表、双链表、循环单链表和循环双链表,以及顺序表的相关操作。 首先,**单链表** 是一种简单的数据结构,每个节点包含数据和一个指向下一个节点的指针。在Python...

    python实现单链表的逆置.md

    单链表的逆置

    python实现的单链表的基本操作和进阶操作

    1. Python实现单链表; 2. 确保可执行,并在文件中给出了案例与执行结果; 3. 单链表的操作:单链表构建,从头插入,从尾插入以及从指定位置插入与删除等操作; 4. .py文件展示了可执行的代码文件 5. 具体内容分析...

    单链表反转python实现代码

    单链表反转的python实现,简洁详细易于理解,附带注释易于分析

    python实现单链表中删除倒数第K个节点的方法

    本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点。 代码: class LinkedListAlgorithms(object): def __init__...

    python如何实现单链表的反转

    在本篇内容中,我们将探讨如何用Python实现单链表的反转操作。 首先,我们需要创建一个表示链表节点的类`Node`: ```python class Node: def __init__(self, data=None, next=None): self.data = data self....

    Python单链表原理与实现方法详解

    Python实现单链表 关于链表 链表(Linked List)是由许多相同数据类型的数据项按照特定顺序排列而成的线性表。 链表中个数据项在计算机内存中的位置是不连续且随机的,数组在内存中是连续的。 链表数据的插入和...

    python版本单链表实现代码

    在本文中,我们将探讨如何在Python中实现单链表。单链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和一个指向下一个节点的引用(在Python中通常称为指针)。在Python中,由于没有原生的指针概念,...

    数据结构与算法(四):Python实现单链表的反转、环的检测、两个有序链表的合并、判断单向链表是否是回文字符串

    根据链表数据结构的知识,进行初步练习,从单链表的反转、环的检测、两个有序链表的合并、判断单向链表是否是回文字符串四个题目着手,分别进行代码实现。 首先定义单链表类: # 结点类 class Node(object): def _...

    单链表反转python实现代码示例

    单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表 循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur-&gt;next指向pre即可。 代码: class ListNode: def __init__(self,x): self...

    Python实现数据结构线性链表(单链表)算法示例

    在这个示例中,我们将详细讨论如何用Python实现单链表的定义、插入、删除、打印等基本操作。 首先,我们需要定义一个表示链表节点的类`Node`。这个类有两个属性:`data`用于存储数据,`next`用于指向下一个节点。`...

    SingleLinkList_python数据结构单链表函数_

    在这个"SingleLinkList_python数据结构单链表函数_"主题中,我们将深入探讨如何在Python中实现单链表及其核心操作。 首先,我们有两个文件:LList.py和LNode.py。LNode.py通常会定义链表的节点类,而LList.py将包含...

    单链表的基本操作及实现

    在编程中,单链表通常用类或结构体来实现,包括节点类和链表类。例如,Python中的实现如下: ```python class Node: def __init__(self, data=None): self.data = data self.next = None class LinkedList: ...

Global site tag (gtag.js) - Google Analytics