用Python学习数据结构2--链表

来源:互联网 发布:人工智能电影我看哭了 编辑:程序博客网 时间:2024/06/03 17:21

一、链表简介

  1. 链表是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接
    2.根据结构的不同,链表可分为单项链表,单项循环链表,双向链表,双向循环链表等。
    单项链表和单项循环链表结构如图所示:
    这里写图片描述

二、单项循环列表操作

这里写图片描述

三、Python实现单向循环列表

Python中采用“引用+类”来实现链表,Node类代表链表中的一个节点

# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""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=newnextclass SinCyLinkedList:    #初始化链表为空    def __init__(self):        self.head=Node(None)        self.head.setNext(self.head)    #增加第一个结点    def add(self,item):        temp=Node(item)        temp.setNext(self.head.getNext())        self.head.setNext(temp)    #删除指定结点    def remove(self,item):        prev=self.head        while prev.getNext()!=self.head:            cur=prev.getNext()            if cur.getData()==item:                prev.setNext(cur.getNext())            prev=prev.getNext()    #搜索结点是否存在于链表中    def search(self,item):        cur=self.head.getNext()        while cur!=self.head:            if cur.getData()==item:                return True            cur=cur.getNext()        return False    #判断链表是否为空    def empty(self):        return self.head.getNext()==self.head    #求链表的大小    def size(self):        count=0        cur=self.head.getNext()        while cur!=self.head:            count+=1            cur=cur.getNext()        return countif __name__=='__main__':    s=SinCyLinkedList()    print('s.empty()==%s,s.size()==%s' % (s.empty(),s.size()))       s.add(19)    s.add(86)    print('s.empty()==%s,s.size()==%s' % (s.empty(),s.size()))     print('86 is%s in s' % ('' if s.search(86) else 'not'))    print('4 is%s in s' % ('' if s.search(4) else 'not'))    s.remove(19)    print('s.empty()==%s,s.size()==%s' % (s.empty(),s.size())) 

运行结果如下:
这里写图片描述

本文参考自:http://www.cnblogs.com/russellluo/p/3285045.html

0 0
原创粉丝点击