最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)結(jié)構(gòu)之線性表的順序存儲結(jié)構(gòu)

 更新時(shí)間:2018年09月28日 10:32:26   作者:PyTi  
這篇文章主要為大家詳細(xì)介紹了python數(shù)據(jù)結(jié)構(gòu)之線性表的順序存儲結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

用Python仿照C語言來實(shí)現(xiàn)線性表的順序存儲結(jié)構(gòu),供大家參考,具體內(nèi)容如下

本文所采用的數(shù)據(jù)結(jié)構(gòu)模板為 《數(shù)據(jù)結(jié)構(gòu)教程》C語言版,李春葆、尹為民等著。

該篇所涉及到的是線性表的順序存儲結(jié)構(gòu)。

代碼:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
 
__author__ = 'MrHero'
 
 
class Node(object):
  """
  線性表的存儲結(jié)構(gòu)
  和 C 語言中的鏈?zhǔn)酱鎯Y(jié)構(gòu)類似
  """
  def __init__(self, data=None):
    self.data = data
    self.next = None
 
 
class LKList(object):
  """
  線性表的具體操作
  """
 
  def __init__(self):
    """
    相當(dāng)于初始化線性表, 即創(chuàng)建頭結(jié)點(diǎn)
    頭節(jié)點(diǎn)為空節(jié)點(diǎn),占據(jù)位置號為0
    創(chuàng)建好的表即為: 頭節(jié)點(diǎn)[0]->節(jié)點(diǎn)[1]->節(jié)點(diǎn)[2]->節(jié)點(diǎn)[3]->節(jié)點(diǎn)[4]
    :return:
    """
    self.L = Node(None)
    self.L.next = None
    self.length = 0
 
  def is_empty(self):
    """
    判斷線新表的長度
    :return:
    """
    return self.length == 0
 
  def get_length(self):
    """
    獲取線新表的長度
    :return:
    """
    return self.length
 
  def insert(self, i, elem):
    """
    在指定位i處置插入元素elem
    :param i: 指定的位置
    :param elem: 插入的元素elem
    :return:
    """
    j = 0
    p = self.L
    while j < i-1 and p is not None: # 查找第 i-1 個(gè)節(jié)點(diǎn)
      j += 1
      p = p.next
    if p is None:  # 未找到邏輯位序?yàn)?i-1 的節(jié)點(diǎn)
      raise IndexError("Index is out of range!")
    else:  # 找到邏輯位序?yàn)?i-1 的節(jié)點(diǎn)
      tmp = Node(elem)
      tmp.next = p.next
      p.next = tmp
      self.length += 1
 
  def delete(self, i):
    """
    刪除指定節(jié)點(diǎn)的元素
    :param i: 指定節(jié)點(diǎn)
    :return: 刪除的指定節(jié)點(diǎn)元素值
    """
    if self.is_empty():
      raise IndexError("The list is empty!")
    elif 0 < i <= self.length:
      j = 1
      p = self.L
      while j < i and p:
        p = p.next
        j += 1
      delelte_node = p.next
      p.next = delelte_node.next
      self.length -= 1
      return delelte_node.data
    else:
      raise IndexError("Index is out of range!")
 
  def get_elem(self, i):
    """
    獲取某個(gè)節(jié)點(diǎn)的值
    :param i:
    :return:返回某個(gè)節(jié)點(diǎn)的值
    """
    if self.is_empty():
      raise IndexError("The list is empty")
    elif 0 < i <= self.length:
      j = 0
      p = self.L
      while j < i and p:
        p = p.next
        j += 1
      print p.data
    else:
      raise IndexError("Index is out of range!")
 
  def locate_elem(self, elem):
    """
    查找某值的位置
    :param elem:
    :return: 返回第一個(gè)值等于elem的位置
    """
    j = 0
    p = self.L
    while p is not None and p.data != elem:
      p = p.next
      j += 1
    if p is Node:
      return -1
    else:
      return j
 
  def create_dict_list_H(self, list):
    """
    頭插法建表
    :param list:
    :return:
    """
    p = self.L
    for i in range(len(list)):
      tmp = Node(list[i])
      tmp.next = p.next
      p.next = tmp
      self.length += 1
 
  def create_dict_list_E(self, list):
    """
    尾插法建表
    :param list:
    :return:
    """
    p = self.L
    r = p
    for i in range(len(list)):
      tmp = Node(list[i])
      r.next = tmp
      r = tmp
      self.length += 1
    r.next = None
 
  def show_lklist(self):
    if self.is_empty():
      raise IndexError("It's a empty list!")
    else:
      j = 1
      p = self.L
      while j <= self.length and p:
        p = p.next
        if p is not None:
          print p.data
        j += 1
 
 
if __name__ == '__main__':
  lk = LKList()
  #
  # lk.create_dict_list_E([1, 2, 3, 4])
  # print "-----"
  # lk.get_elem(1)
  # lk.get_elem(2)
  # lk.get_elem(3)
  # lk.get_elem(4)
  # print "-------"
  # lk.show_lklist()
  # lk.insert(3, 5)
  # print "-------"
  # lk.show_lklist()
  # lo = lk.locate_elem(5)
  # print "location is %d" % lo
  # lk.delete(4)
  # print "-------"
  # lk.show_lklist()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python sort、sorted高級排序技巧分享(key的使用)

    python sort、sorted高級排序技巧分享(key的使用)

    這篇文章主要介紹了python sort、sorted高級排序技巧(key的使用),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Python查看多臺服務(wù)器進(jìn)程的腳本分享

    Python查看多臺服務(wù)器進(jìn)程的腳本分享

    這篇文章主要介紹了Python查看多臺服務(wù)器進(jìn)程的腳本分享,需要的朋友可以參考下
    2014-06-06
  • 詳解TensorFlow2實(shí)現(xiàn)前向傳播

    詳解TensorFlow2實(shí)現(xiàn)前向傳播

    這篇文章主要介紹了TensorFlow2如何實(shí)現(xiàn)前向傳播,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python使用Selenium獲取Web頁面信息的流程步驟

    Python使用Selenium獲取Web頁面信息的流程步驟

    在 Web 自動(dòng)化測試和數(shù)據(jù)抓取中,獲取頁面信息是一個(gè)基本且重要的操作,通過 Selenium,您可以輕松地獲取頁面的各種信息,這些信息不僅可以用于驗(yàn)證測試結(jié)果,還可以用于數(shù)據(jù)分析和處理,所以本文給大家介紹了Python使用Selenium獲取Web頁面信息的流程步驟
    2025-03-03
  • 使用Python在Word文檔中添加,刪除和回復(fù)批注

    使用Python在Word文檔中添加,刪除和回復(fù)批注

    在文檔協(xié)作與審閱場景中,高效管理批注是提升團(tuán)隊(duì)效率的關(guān)鍵環(huán)節(jié),下面我們就來看看如何使用Python在Word文檔中實(shí)現(xiàn)添加、刪除和回復(fù)批注的操作吧
    2025-03-03
  • Python+Pillow進(jìn)行圖形處理的示例詳解

    Python+Pillow進(jìn)行圖形處理的示例詳解

    PIL:Python Imaging Library,已經(jīng)是Python平臺事實(shí)上的圖像處理標(biāo)準(zhǔn)庫了。PIL功能非常強(qiáng)大,但API卻非常簡單易用。本文就將利用Pillow進(jìn)行簡單的圖形處理,需要的可以參考一下
    2022-10-10
  • Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之快速排序詳解

    Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之快速排序詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之快速排序,詳細(xì)分析了快速排序的原理與Python實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-04-04
  • Python-OpenCV基本操作方法詳解

    Python-OpenCV基本操作方法詳解

    下面小編就為大家分享一篇Python-OpenCV基本操作方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Django 如何實(shí)現(xiàn)文件上傳下載

    Django 如何實(shí)現(xiàn)文件上傳下載

    這篇文章主要介紹了Django 如何實(shí)現(xiàn)文件上傳下載,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下
    2021-04-04
  • Python 制作查詢商品歷史價(jià)格的小工具

    Python 制作查詢商品歷史價(jià)格的小工具

    這篇文章主要介紹了Python 如何制作查詢商品歷史價(jià)格的小工具,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-10-10

最新評論

雅江县| 三穗县| 南部县| 寿阳县| 于都县| 屯门区| 阿坝县| 会同县| 正阳县| 绥中县| 奇台县| 商丘市| 海原县| 邵阳县| 司法| 南昌县| 宁陕县| 繁峙县| 奉新县| 清原| 涞源县| 苏尼特右旗| 进贤县| 莱州市| 德兴市| 金坛市| 广宗县| 铁岭市| 隆德县| 邵东县| 湖南省| 抚远县| 广河县| 南安市| 门源| 江津市| 闵行区| 渝中区| 阳新县| 若尔盖县| 会同县|