美文网首页
算法04-单循环链表

算法04-单循环链表

作者: Simon0903 | 来源:发表于2019-07-30 08:23 被阅读0次


简介:

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表

双向链表


节点:

class Node():

""" 节点 """

    def __int__(self,item):

        self.itme = item

        self.next = next

双向链表: 

.class Single_cycle_link_list(object,SingleLinkList):

“”“单向循环链表”“”

    def __init__(self,node=None):

        self.__head = node

        if node:  #如果节点不为空,则节点后继指向链表头,完成循环

            ode.next = self.__head

判空方法:

def is_empty(self):

“”“判断链表是否为空”“”

    :return: self.__head == None

求链表长度:

def length(self):

“”“返回链表长度”“”

    if self.is_empty():

        return True

    else:

        cur = self.__head

        count = 1

        while cur.next != self.__head: #如果游标不等于链表头,一直偏移数数

            count += 1

            cur = cur.next

        return count

打印元素展示

def travel():

“”“打印链表元素”“”

    if self.is_empty():

        return None

    cur = self.__head # 游标

    while cur.next != self.__head:

        print(cur.elem,end='')

        cur = cur.next

    print(cur.elem) #退出循环,游标偏移停止的时候,再打印最后的元素

尾部插入:

def append(self,item):

“”“尾部插入”“”

    node = Node()

    if self.is_empty():

        self.__head = node

        node.next = self.__head

    else:

        cur = self.__head

        while cur.next != self.__head: #游标位置未指向头结点,则继续偏移

            cur = cur.next    

        node.next = self.__head    #退出循环后,游标位置则为最后 

        cur.next = node

头插法:

def add(self,item):

“”“头部插入元素”“”

    node = Node() #实例化节点

    if self.is_empty: #如果是空链表则:空节点next指向头结点    

        self.__head = node

        node.next = self.__head

    else:

        while cur.next != self.__head: #只要指针不是指向首节点

        cur = cur.next #开始偏移

        #当退出循环,游标cur当前指向是尾节点

        node.next = self.__head

位置插入:

def insert(self,pos,item):

""索引位置进行插入""

    if pos <= 0:    

        self.add(item)

    elif pos > (self.length()-1)::

        self.append(item)

    else:

        cur = self.__head

        count = 0

        while count < pos:

            count += 1

            cur = cur.next   #偏移到末尾

        node = Node(item)

        node.next = cur 

        node.perv = cur.perv

        cur.perv.next = cur.perv

        cur.perv = node 

查找元素:

def search(self,item):

“”“查找元素”“”

    if self.is_empty(): #判断链表是否为空

        return False

    cur = self.__head

    while cur.next != self.__head:

        if cur.elem == item:

            return True

        else:

            cur = cur.next 

    #如果单节点,且next是指向首节点,则不进入循环,再加判断

    if cur.elem == item:

        return True

    return False

删除元素

def remove(self,pos,item):

“”“删除元素”“”

    cur = self.__head

    per = None

    while cur.next != self.__head: #如果游标的next不是指向链表头(尾节点),则进入循环偏移

        if cur.elem == item: #如果游标指向的元素恰巧是传入的参数

            if cur == self.__head: #再判断是不是头节点   

                self.__head = cur.next

            else:  #中间节点的情况

                per.next = cur.next

            break

        else:

            #如果不是指向传入的参数,游标per指向游标curs

            per = cur

            cur = cur.next

    #直到退出循环,游标遍历位置是指向尾节点

    if cur.elem == item: #如果是尾节点,是不会进入上面的循环,再加判断

        if cur == self.__head: #如果只有一个节点

            self.__head = None

        else:

            pre.next = cur.next

相关文章

  • 算法04-单循环链表

    简介: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向...

  • 数据结构与算法--循环链表

    数据结构与算法--循环链表 单循环链表的实现 单链表的实现中,最后一个结点始终指向null,表示达到表尾部。位于l...

  • 线性表存储结构

    数组实现 结构体实现 带头结点的单循环链表 带头结点的双循环链表 带头结点 带头结点的单循环链表和双循环链表 不管...

  • 算法04-链表

    链表: 为什么需要链表 顺序结构需要预先知道数据大小来申请连续的存储空间,而进行扩充时又需要进行数据的搬迁,所以使...

  • 单循环链表

    单循环链表:将单链表中终端结点的next域由空指针改为指向头结点,就使得整个单链表形成一个环,这种头尾相接的单链表...

  • 2018-07-31------数据结构

    1、单链表 传送1 传送门2 2、双链表 传送门 3、循环链表 单循环链表 双向循环链表 4、静态链表 传送门 5...

  • 机试常用算法和题型-链表专题

    链表增删改查 链表选择排序法+找到新节点排序位置再插入 单循环链表+合并 链表查找和交换 链表如何删除最大值,排序...

  • 线性表的链式存储结构2.0

    这篇文章开启线性表的大版本更新2.0----循环链表 单循环链表 由前面关于单链表的介绍我们知道,在单链表中每个结...

  • 数据结构与算法-线性表-循环链表

    将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简...

  • 循环链表

    将单链表中终端节点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表为单循环链表,简称...

网友评论

      本文标题:算法04-单循环链表

      本文链接:https://www.haomeiwen.com/subject/xbzzoqtx.html