刚学不久python,来实现一下单链表
网上拉的图:
下面是代码了:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#__author__ = 'Mr Cai'
class Node(object):
'''节点'''
def __init__(self,val,p = 0):
self.data = val
self.next = p
class LinkList(object):
'''单链表类'''
def __init__(self):
self.head = 0
def initlist (self,data):
'''初始化列表'''
#创建头节点,next为0
self.head = Node(data[0])
p = self.head
for item in data[1:]:
node = Node(item)
p.next = node
p = node
def getlength(self):
'''获取链表长度'''
if self.head == 0:
return 0
p = self.head
length = 1
while p.next != 0:
p = p.next
length += 1
return length
def IsEmpty(self):
'''判断链表是否是空,布尔型'''
if self.head == 0:
return True
else:
return False
def clear(self):
'''清空列表'''
self.head = 0
def append(self,item):
'''尾部加入元素'''
if self.head == 0:
self.head = Node(item)
p = self.head
while p.next != 0:
p = p.next
node = Node(item)
p.next = node
def getitem(self,index):
'''给位置,打印元素'''
if self.IsEmpty() :
print 'The List is empty!'
return
if index < 0 or index > self.getlength() :
print 'The index is error!'
return
p = self.head
for i in range(0,index):
p = p.next
print p.data
def insert(self,item,index):
'''插入元素'''
if self.IsEmpty():
print 'The list is empty'
return
if index < 0 or index > self.getlength() :
print 'The index is error!'
return
p = self.head
for i in range(0,index - 1):
p = p.next
temp = p.next
node = Node(item,temp)
p.next = node
def delete(self,index):
'''删除元素'''
if self.IsEmpty():
print 'The list is empty'
return
if index < 0 or index > self.getlength() :
print 'The index is error!'
return
p = self.head
for i in range(0,index - 1):
p = p.next
p.next = p.next.next
def show(self):
'''打印出当前链表中所有元素'''
if self.IsEmpty():
print 'The list is empty'
return
p = self.head
while p != 0 :
print p.data
p = p.next
if __name__ == '__main__' :
List = LinkList()
print List.IsEmpty()
List.initlist([3,5,6,8])
# List.show()
List.append(10)
# List.show()
# print List.getlength()
# List.clear()
# List.show()
# List.insert(111,3)
# List.show()
# List.delete(2)
# List.show()