算法与数据结构第三节

链表的实现

在这里插入图片描述

单向链表

单向链表也叫单链表,每个节点包含两个域,一个欣喜域(元素域)和一个链接域。这个链接指向链表的下一个节点,而最后一个节点的链接域则指向一个空值。

单链表的操作

  1. is_empty()链表是否为空
  2. length()链表长度
  3. travel()遍历整个链表
  4. add(item)链表头部添加元素
  5. append(item)链表尾部添加元素
  6. insert(pos,item)指定位置添加元素
  7. remove(item)删除节点
  8. search(item)查找节点是否存在

单链表的实现

变量标识的本质

变量中存储的是值对象的地址

class Node(object):
       #节点
       def __init__(self,elem):
       		self.elem = elem
       		self.next = None
node = Node(100)
class SingleLinkList(object):
#单链表
	def __init__(self,node=None):
		slef._head=None     #私有方法
	def is_empty(self):
		#链表是否为空
		self._head==None
		pass
	def length(self):
		#链表长度
		#cur游标,用来遍历节点
		cur = self._head =None
		#count记录数量
		count =0
		while cur != None:
			count += 1
			cur = cur.next
		rerurn count
	def travel(self):
		#遍历整个链表
		cur = self._head
		#count记录数量
		while cur !=None:
			print(cur.elem,end=" ")
			cur = cur.next
		
		return count
		
		
	def add(self,item):
	#链表头部添加元素
		node = Node(item)
		node.next = self._head
		self._head = node 
 		cur = self._head
 		while cur.next !=None:
 			cur = cur.next
 		cur.next = node
	def append(self,item):
     #链表尾部添加元素
     	node = Node(item)
     	if self.is_empty():
     		self._head = node
     	else:
     	cur = self._head
     	while cur.next != None
     		cur = cur.next
     	cur.next = node
	def insert(self,pos,item):
	#指定位置添加元素
	if pos <= 0:	
		self.add(item)
	elif pos>self.length() -1:
		self.append(item)
	else:
		pre = self._head
		count =0
	    while count <  (pos-1):
		count +=1
		pre = pre.next
		
		#当循环退出后,pre指向pos-1位置
		node= Node(item)
		node.next = pre.next
		pre.next = node
	
	#pos参数 从0开始
	def remove(self,item):
	#删除节点
	cur = self._head
	pre = None
	while cur != None:
		if cur.elem = item:
		 #先判断此结点是否是头结点
		 #头结点
		 if cur == self._head:
		 	self._head = cur.next
		 	break
		 	else:
			pre.next = cur.next
			break
		else:
			pre = cur
			cur = cur.next
	def search(self,item):
	#查找节点是否存在
	cur = self._head
	whilecur != None:
	if cur.elem ==item:
		return True
	else:
		cur = cur.next
	return False
	
	
	
list()
li = List()
node =Node(100)
singele_obj = SingleLinklist()
single_obj.travel()
if __name__ = "__main__":
	ll = SingleLinkList()
	print(ll.is_empty())
	print(ll.length())
	ll.append(2)
	ll.append(3)
	ll.travel()
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值