单链表
单链表是一种链式的数据结构,用一组结点来存储数据,每个结点由值域和指向下一个结点的指针域组成,单链表中存储结点的地址可以是不连续的。
常见操作
- 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()
运行结果为:

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