亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python版本單鏈表實現代碼

2020-02-15 23:04:20
字體:
來源:轉載
供稿:網友

今天看了一下數據結構的書,發現其實數據結構沒有幾種,線性表,數組,字符串,隊列和棧,等等,其實是一回事,然后就是樹結構,圖結構。數據結構的理論并不難,主要是要自己寫一下這些數據結構以及對應的基本的操作方法,這樣就能夠更快的提高。

這一篇blog寫一下線性表。

線性表:分為順序表和鏈表

一、順序表

順序表就是相對于表中的數據,地址也是順序的,所以可以隨機存取。但是在操作插入和刪除元素的時候,由于要滿足地址的連續性,所以要移動很多的元素位置,因此,插入或者刪除一個順序表的元素的時間復雜度是o(n)。很多時候,在對順序表做合并的時候,需要先對表中的元素進行排序,然后再進行處理,這樣可以避免每次都從頭進行查詢。

二、鏈表

鏈表就失去了順序表的隨機存取特點,即每次從中取一個元素都要從頭開始找,這樣耗費了一些時間,時間復雜度為o(n);但是在做插入和刪除,以及兩個鏈表合并的時候,就方便了很多,只需要做一點指針修改就可以了。

鏈表中的每一個元素節點都包含了數據部分和下一個節點的指針。一般在鏈表的頭部附設一個頭結點,而且頭結點一般不存儲數據,而是存放一些長度等附加信息,或者不存儲。

在很多語言中沒有指針這一概念,而有數組的概念,比如java和python,java中的數組還要求定義數組的類型,也就是說必須都是同一類型的數據,而python則沒有要求,所以python的list更貼近鏈表的真正含義。這種用數組描述的鏈表叫做靜態鏈表。使用靜態鏈表來描述鏈表對此類語言要方便很多了,本身這些語言都提供了內置類來處理鏈表。

除此之外,還有循環鏈表,雙向鏈表(解決了無法向前搜索的問題,但是在修改指針的時候需要有更多的操作)。

# -*- coding=utf-8 -*-# 這個例子是Python版本的單鏈表class Node(object):  def __init__(self, value, next=0):    self.value = value    self.next = next # 指針class LinkedList(object):  # 鏈表的數據結構  def __init__(self):    self.head = 0 # 頭部  def __getitem__(self, key):    if self.is_empty():      print 'Linked list is empty.'      return    elif key < 0 or key > self.get_length():      print 'The given key is wrong.'      return    else:      return self.get_elem(key)  def __setitem__(self, key, value):    if self.is_empty():      print 'Linked list is empty.'      return    elif key < 0 or key > self.get_length():      print 'The given key is wrong.'      return    else:      return self.set_elem(key, value)  def init_list(self, data): # 按列表給出 data    self.head = Node(data[0])    p = self.head # 指針指向頭結點    print p, self.head    for i in data[1:]:      p.next = Node(i) # 確定指針指向下一個結點      p = p.next # 指針滑動向下一個位置    print self.head.next.next  def get_length(self):    length = 0    p = self.head    while p != 0: # 0 值就是Node結點中默認的 0 值,表示下一個結點沒有了,即沒有為其賦值      length += 1      p = p.next    return length  def is_empty(self):    if self.head == 0:      return True    else:      return False  def insert_node(self, index, value):    if index < 0 or index > self.get_length():      print 'Can not insert node into the linked list.'    elif index == 0:      temp = self.head      self.head = Node(value, temp)    else:      p, post = self.head, self.head      for i in xrange(index):        post = p        p = p.next      temp = p      post.next = Node(value, temp)  def delete_node(self, index):    if index < 0 or index > self.get_length()-1:      print "Wrong index number to delete any node."    elif self.is_empty():      print "No node can be deleted."    elif index == 0:      temp = self.head      self.head = temp.next    elif index == self.get_length():      p = self.head      for i in xrange(self.get_length()-2):        p = p.next      p.next = 0    else:      p = self.head      for i in xrange(index-1):        p = p.next      p.next = p.next.next  def show_linked_list(self): # 打印鏈表中的所有元素    if self.is_empty():      print 'This is an empty linked list.'    else:      p, container = self.head, []      for _ in xrange(self.get_length()-1):        container.append(p.value)        p = p.next      container.append(p.value)      print container  def clear_linked_list(self): # 將鏈表置空    self.head = 0  def get_elem(self, index):    if self.is_empty():      print "The linked list is empty. Can not get element."    elif index < 0 or index > self.get_length()-1:      print "Wrong index number to get any element."    else:      p = self.head      for _ in xrange(index):        p = p.next      return p.value  def set_elem(self, index, value):    if self.is_empty():      print "The linked list is empty. Can not set element."    elif index < 0 or index > self.get_length()-1:      print "Wrong index number to set element."    else:      p = self.head      for _ in xrange(index):        p = p.next      p.value = value  def get_index(self, value):    p = self.head    for i in xrange(self.get_length()):      if p.value == value:        return i      else:        p = p.next    return -1l = LinkedList()print "The length of linked list now is: ", l.get_length()print l.is_empty()l.init_list([1, 5, 12, "fjd", 45, 999])print "The length of linked list now is: ", l.get_length()print l.is_empty()l.insert_node(4, 100)l.insert_node(6, "cecil")l.show_linked_list()print "The value of index 0 is: ", l.get_elem(0)l.set_elem(0,1000)l.show_linked_list()print "the index of *** is: ", l.get_index(1009)print "The length of linked list now is: ", l.get_length()l.delete_node(3)#l.clear_linked_list()l.show_linked_list()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品视频在线播放| 性欧美亚洲xxxx乳在线观看| 美日韩丰满少妇在线观看| 国产激情久久久| 国产精品久久久久久av下载红粉| 亚洲视频一区二区| 欧美激情图片区| 亚洲香蕉成人av网站在线观看| 九九热这里只有在线精品视| 98精品国产自产在线观看| 久久久久国产一区二区三区| 久久精品视频导航| 亚洲女人天堂色在线7777| 91久久嫩草影院一区二区| 69视频在线播放| 日韩美女视频免费在线观看| 国产成+人+综合+亚洲欧美丁香花| 亚洲精品自拍第一页| 黑人巨大精品欧美一区二区三区| 欧美床上激情在线观看| 亚洲区一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 日韩欧美福利视频| 国模精品视频一区二区三区| 亚洲国产另类久久精品| 日韩国产高清污视频在线观看| 欧美富婆性猛交| 久久精品精品电影网| 欧美老女人bb| 欧美日韩xxx| 欧美成人精品在线播放| 欧美丰满少妇xxxxx| 乱亲女秽乱长久久久| 欧美另类99xxxxx| 国产精品影院在线观看| 亚洲国产精品高清久久久| 日韩美女免费观看| 久久久久久久久久久成人| 国产视频精品免费播放| 国产精品永久免费视频| 成人免费在线网址| 成人免费淫片aa视频免费| 国产精品成久久久久三级| 欧美裸体xxxxx| 久青草国产97香蕉在线视频| 亚洲欧洲一区二区三区久久| 黑人精品xxx一区一二区| 成人激情黄色网| 国产精品第二页| 韩日精品中文字幕| 欧美日韩亚洲一区二| 欧美激情亚洲国产| 亚洲欧美一区二区三区四区| 国产激情久久久| 欧美激情乱人伦| 精品久久久久久久久久国产| 成人性生交大片免费看小说| 欧美丝袜一区二区三区| 性欧美视频videos6一9| 亚洲国产精久久久久久久| 精品国产乱码久久久久久虫虫漫画| 色综合天天狠天天透天天伊人| 国产精品免费观看在线| 国产一区二区三区四区福利| 亚洲跨种族黑人xxx| 91高清免费在线观看| 国产主播喷水一区二区| 国产精品成人av性教育| 日韩高清人体午夜| 久久久久久久久久国产精品| 亚洲国产精品系列| 高清一区二区三区日本久| 国产剧情久久久久久| 一本色道久久88精品综合| 秋霞av国产精品一区| 欧美一级视频一区二区| 国产精品高潮呻吟久久av野狼| 国产精品美女久久久久久免费| 亚洲黄页网在线观看| 国产免费成人av| 亚洲精品在线不卡| 国产精品扒开腿做爽爽爽的视频| 国产日韩精品在线| 国产日韩欧美日韩| 97碰在线观看| 日韩精品在线观看视频| 91亚洲精品在线| 成人综合国产精品| 成人激情视频在线播放| 亚洲精品av在线播放| 亚洲bt天天射| 亚洲人成伊人成综合网久久久| 国产日韩欧美在线| 国产午夜精品视频| 久久久久久亚洲精品中文字幕| 欧美另类老女人| 亚洲国产另类久久精品| 欧美综合在线第二页| 日韩电影免费观看在线| 国产精品人成电影| 2019日本中文字幕| 97**国产露脸精品国产| 日韩av网址在线观看| 亚洲国产精品电影| 日韩精品一区二区视频| 欧美影院成年免费版| 亚洲最大成人网色| 国产欧美一区二区三区四区| 欧美大奶子在线| 久久亚洲精品中文字幕冲田杏梨| 欧美噜噜久久久xxx| 5252色成人免费视频| 国产精品视频区1| 日韩av影视在线| 2019中文字幕在线免费观看| 国产午夜精品全部视频播放| 久久精视频免费在线久久完整在线看| 91视频8mav| 久久视频在线直播| 奇米成人av国产一区二区三区| 亚洲欧美国产日韩中文字幕| 国语自产精品视频在线看抢先版图片| 中文字幕亚洲欧美| 日本一区二三区好的精华液| 亚洲人成人99网站| 俺去了亚洲欧美日韩| 国产一区二区三区日韩欧美| 国产一区二区丝袜高跟鞋图片| 国产精品观看在线亚洲人成网| 懂色aⅴ精品一区二区三区蜜月| 中文字幕视频一区二区在线有码| 欧美电影免费播放| 成人午夜一级二级三级| 欧洲永久精品大片ww免费漫画| 欧美激情区在线播放| 日韩av免费看网站| 91精品91久久久久久| 91网在线免费观看| 91精品在线国产| 成人免费淫片aa视频免费| 久久精品亚洲热| 亚洲精品国产精品国自产观看浪潮| 色噜噜国产精品视频一区二区| 91麻豆国产精品| 亚洲aa在线观看| 国产精品三级久久久久久电影| 中文字幕日韩在线播放| 日韩精品999| 疯狂蹂躏欧美一区二区精品| 久久成人这里只有精品| 美女性感视频久久久| 亚洲第一区在线观看| 亚洲福利小视频| 久久综合国产精品台湾中文娱乐网| 久久亚洲精品成人| 精品国产依人香蕉在线精品| 91精品综合视频| 欧美综合在线观看| 精品久久久久久久久中文字幕| 久久91亚洲人成电影网站| 欧洲日本亚洲国产区| 亚洲国产天堂久久国产91| 亚洲白虎美女被爆操| 国产精品美女www爽爽爽视频|