# _*_ coding:utf-8 _*_
''' @author:xianyt
@date:2018/
@func:用python實現鍊錶操作
'''class node(object):
'''data:節點儲存的資料
_next:儲存下乙個節點物件
'''def __init__(self, data, pnext=none):
self.data = data
self._next = pnext
def __repr__(self):
'''用來定義node的字元輸出
:return: 資料的data
'''return str(self.data)
class operating(object):
def __init__(self):
self.head = none
self.length = 0
def isempty(self):
#判斷鍊錶是否為空
return (self.length == 0)
'''在末尾新增乙個節點
:param dataornode:
:return:
'''item = none
#判斷輸入值是否是乙個節點,如果不是則建立乙個節點
if isinstance(dataornode, node):
item = dataornode
else:
item = node(dataornode)
#如果鍊錶為空,則建立乙個鍊錶。長度加一
if self.isempty():
self.head = item
self.length += 1
print('插入成功********')
return true
else:
#遍歷到鍊錶末尾並新增至末尾,長度加一
node = self.head
while node._next:
node = node._next
node._next = item
self.length += 1
print('插入成功********')
return true
def addindex(self, dataornode, index):
'''在指定位置上新增節點
:param dataornode:
:param index:
:return:
'''# 判斷數值不是節點,則建立節點
if not isinstance(dataornode, node):
items = node(dataornode)
#判斷鍊錶是否存在或是指定位置大於鍊錶長度
if self.isempty() or index>=self.length:
return true
else:
node = self.head
#判斷是否是插入乙個頭結點
if index == 0:
items._next = node
self.head = items
self.length += 1
print('插入成功********')
return true
i = 0
#找到指定位置
while iself.length or index<0:
print('輸入位置不合理')
return false
#判斷輸入數值是否是節點,取出數值
if isinstance(dataornode, node):
dataornode = dataornode.data
node = self.head
i = 0
while node:
#修改數值
if i == index:
node.data = dataornode
print('修改節點成功*********')
return true
i += 1
node = node._next
def find(self, dataornode):
'''查詢指定節點的資料
:param dataornode:
:return: 返回空或者位置
'''index = 0
#判斷鍊錶是否為空
if self.isempty():
print('鍊錶為空**************')
return false
node = self.head
# 判斷是否是節點
if isinstance(dataornode, node):
# 遍歷查詢
while node:
# 判斷是否找到
if node.data == dataornode.data:
print('數值處於鍊錶{}*************'.format(index))
return index
index += 1
node = node._next
else:
#遍歷完成都沒有找到
print('沒有找到該節點**************')
return false
#不是節點
else:
while node:
if dataornode == node.data:
print('數值處於鍊錶{}位置*************'.format(index))
return index
node = node._next
index += 1
else:
# 遍歷完成都沒有找到
print('沒有找到該節點**************')
return false
def show(self):
'''輸出鍊錶
:return:
'''#判斷鍊錶是否為空
if self.isempty():
print('鍊錶還是空的喲*******')
else:
print('鍊錶輸出:',end='')
node = self.head
while node:
print('{}'.format(node.data), end='-')
node = node._next
print()
def clear(self):
'''清除鍊錶
:return:
'''self.head = none
self.length = 0
if __name__ == "__main__":
o = operating()
while true:
print('鍊錶基本操作(0:輸出鍊錶,1:新增節點,2:新增指定位置節點,3:刪除節點,4:修改節點,5:查詢下標位置, 其他數值:退出程式)')
i = int(input('請輸入相應操作:'))
if i == 0:
o.show()
elif i == 1:
try:
data = int(input('請輸入節點數值:'))
except:
print('請輸入數值:')
else:
elif i == 2:
try:
data = int(input('請輸入節點數值:'))
index = int(input('請輸入指定位置:'))
except:
print('請輸入數值')
else:
o.addindex(data, index)
elif i == 3:
try:
data = int(input('請輸入需要刪除的節點數值:'))
except:
print('請輸入數值')
else:
o.delete(data)
elif i == 4:
try:
index = int(input('請輸入需要修改的指定位置:'))
data = int(input('請輸入需要修改的數值:'))
except:
print('請輸入數值:')
else:
o.update(data, index)
elif i == 5:
try:
data = int(input('請輸入查詢節點數值:'))
except:
print('請輸入數值:')
else:
o.find(data)
else:
o.clear()
break
mysql增刪改查鍊錶 鍊錶的增刪改查
include include 先定義鍊錶裡面的元素。typedef struct nodemynode 定義整個鍊錶。typedef struct linkmylink int isempty to mylink mylink mylink 判斷鍊錶是否為空。int push to mylinki...
鍊錶 增刪改查
實現 鍊錶的增刪改查 package com.baicai.linkedlist public class singlinkedlistdome 定義乙個singlinkedlist管理我們的英雄 class singlelinkedlist 如果沒有找到最後的乙個節點就直接往後面找 temp te...
單向鍊錶python實現,增刪改查 鍊錶反轉
單向鍊錶,實現了增刪改查以及鍊錶反轉,class node def init self,val self.val val self.nextp none class linkedlist def init self self.length 0 self.head none self.tail non...