python实现单链表

单链表

单链表是一种链式的数据结构,用一组结点来存储数据,每个结点由值域和指向下一个结点的指针域组成,单链表中存储结点的地址可以是不连续的。

常见操作
  • init_LinkList(array): 尾插法,链表初始化
  • isEmpty(): 判断链表是否为空
  • GetLength(): 获取链表长度
  • print_LinkList(): 打印链表
  • insertElem(value,index):在位置index插入值为value的结点,value所在结点为第index个结点
  • deleteElem(index):删除链表第index个结点
  • Rerverse_LinkList(): 反向打印单链表
实现代码 python
# -*- coding: utf-8 -*-
"""
Created on Tue Apr  2 19:35:00 2019

@author: 86156
"""
#结点定义
class Link_Node(object):  
    def __init__(self,data):#定义链表结点
        self.data=data
        self.next=None
        
class LinkList(object):          #链表的实现
    def __init__(self):          #初始化头结点
        self.head=None
        
    def init_LinkList(self,array): #尾插法,链表初始化
        self.head=Link_Node(array[0]) #头结点值域
        p=self.head
        for i in array[1:]:
            node=Link_Node(i)
            p.next=node     #尾部添加结点
            p=p.next
    
    def isEmpty(self):       #判断链表是否为空
        p=self.head
        return p==None
        
    def GetLength(self): #获取链表长度
        if self.isEmpty():
            exit(0)
        p=self.head
        length=0
        while p:
            length+=1
            p=p.next
        return length
        
    def print_LinkList(self): #打印链表
        if self.isEmpty():
            exit(0)
        p=self.head
        while p:
            print(p.data, end=' ')
            p=p.next
        print("") #打印完换行输出
        
    def insertElem(self,value,index):#在位置index插入值为value的结点,value所在结点为第index个
        p=self.head
        j=1
        while p and j<index-1:
            p=p.next
            j+=1
        node=Link_Node(value) #插入的结点
        node.next=p.next
        p.next=node
        print('在链表第{}个位置插入结点后链表为: '.format(index))
        self.print_LinkList()
       
    def deleteElem(self,index):#删除链表第index个结点
        p=self.head
        if p==0:
            exit(0)
        j=1
        while p.next and j<index-1:
            j+=1
            p=p.next
        q=p.next
        p.next=q.next
        print('删除第{}个结点后链表: '.format(index))
        self.print_LinkList()

  
    def Rerverse_LinkList(self): #反向打印单链表
        temp=[]
        counter=0
        p=self.head
        while p:
            temp.append(p.data)
            counter+=1
            p=p.next
        for i in range(counter):
            print(temp.pop(),end=' ')
     

#测试链表功能
array_test=[10,-5,23,-4,11,9,7,0,2,3]
lst=LinkList()
print("初始链表为:")
lst.init_LinkList(array_test)
lst.print_LinkList()
print('链表的长度为:',lst.GetLength())
lst.insertElem('a',10)
lst.deleteElem(11)
print('逆序打印单链表 :')
lst.Rerverse_LinkList()

运行结果为:

如有问题,请随时指出,万分感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值