python學習中單鏈表,並試著寫了一些鍊錶操作功能
class node:
def __init__(self, val, next=none):
self.val=val
self.next=next
def __str__(self):
return '%s'%self.val
將單個資料模型node存入到這個類中,通過next.node屬性訪問下乙個物件
頭結點 ,在建立新物件時自動生成頭結點
self.head=node(none)
試著編寫了新增元素方法add_node();
通過頭結點的next一步步遍歷鍊錶中每個節點show();
按位置,按值刪除鍊錶元素delete_node_index(),delete_node_val();
通過『索引』取值get_val();
有序鍊錶合併(不產生新鍊錶)node_list_add();
class linklist:
'''生成物件錶即單鏈表物件
物件呼叫方法可以完成單鏈表的各種操作
'''def __init__(self):
'''初始化時 建立乙個無用的節點
讓節點擁有該物件,以表達鍊錶的開端
'''self.head=node(none)#頭節點
def add_node(self,args):
p=self.head
for i in args:
p.next=node(i)
p=p.next
def show(self):
p=self.head.next
while p:
print(p.val)
p=p.next
def is_null(self):
'''判斷鍊錶是否為空'''
return not self.head.next
def clear_node(self):
'''清空鍊錶'''
self.head.next=none
'''尾部插入資料'''
p = self.head.next
while p.next:
p = p.next
for i in iter:
p.next = node(i)
p = p.next
def insert_node(self,num,iter):
'''指定位置插入元素'''
p=self.head
for i in range(num):
if p.next is none:
break
p=p.next
q=p.next
# p.next=none
for i in iter:
p.next=node(i)
p=p.next
p.next=q
def delete_node_index(self,num):
'''按位置刪除'''
p=self.head
for i in range(num):
if p.next is none:
break
p=p.next
p.next=p.next.next
def delete_node_val(self,value):
'''按值刪除'''
p=self.head
while p.next:
if p.next.val==value:
p.next=p.next.next
break
p=p.next
else:
print('不存在')
def get_val(self,index):
p=self.head
for i in range(index+1):
if p.next is none:
raise indexerror
else:
p = p.next
print(p.val)
def add_node_list(self,node_list):
'''有序鍊錶合併'''
p=self.head
q=node_list.head
while q.next:
b=0if q.next is none:
break
while p.next:
if q.next.val>p.next.val and p.next.next == none:
p.next.next=q.next
break
if p.next.val<=q.next.val and q.next.val<=p.next.next.val :
a=q.next
q.next=q.next.next
a.next=p.next.next
p.next.next=a
b=1break
p=p.next
if b!=1:
q=q.next
資料結構學習(六) 單鏈表
線性表中每個節點有唯一的前趨節點和後繼節點 設計鏈式儲存結構時,每個邏輯節點單獨儲存,為了表示邏輯關係,增加指標域 單鏈表 每個物理節點增加乙個指向後繼節點的指標域 雙鏈表 每個物理節點增加乙個指向後繼節點的指標域和乙個指向前趨節點的指標域 typedef struct lnode 定義單鏈表節點型...
資料結構學習筆記 單鏈表
陣列優勢在於快速定位元素,對於讀操作多,寫操作少的場景,陣列更合適 鍊錶優勢在於快速的插入和刪除操作,如果頻繁的在尾部刪除和插入元素,用鍊錶更好 package com.cc.node public class nodedemo1 private node head private node las...
資料結構學習筆記 單鏈表
準備知識在另一篇部落格 單鏈表預備知識 建立單鏈表 頭插法 每次都是從頭結點插入乙個元素的方法,所以它是倒序的。struct lnode 建立結點結構體,由資料域和指標域組成 linknode void createlistf linknode l,elemtype a,int n 從陣列a中讀取資...