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

python數據結構之線性表的順序存儲結構

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

用Python仿照C語言來實現線性表的順序存儲結構,供大家參考,具體內容如下

本文所采用的數據結構模板為 《數據結構教程》C語言版,李春葆、尹為民等著。

該篇所涉及到的是線性表的順序存儲結構。

代碼:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
 
__author__ = 'MrHero'
 
 
class Node(object):
  """
  線性表的存儲結構
  和 C 語言中的鏈式存儲結構類似
  """
  def __init__(self, data=None):
    self.data = data
    self.next = None
 
 
class LKList(object):
  """
  線性表的具體操作
  """
 
  def __init__(self):
    """
    相當于初始化線性表, 即創(chuàng)建頭結點
    頭節(jié)點為空節(jié)點,占據位置號為0
    創(chuàng)建好的表即為: 頭節(jié)點[0]->節(jié)點[1]->節(jié)點[2]->節(jié)點[3]->節(jié)點[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 個節(jié)點
      j += 1
      p = p.next
    if p is None:  # 未找到邏輯位序為 i-1 的節(jié)點
      raise IndexError("Index is out of range!")
    else:  # 找到邏輯位序為 i-1 的節(jié)點
      tmp = Node(elem)
      tmp.next = p.next
      p.next = tmp
      self.length += 1
 
  def delete(self, i):
    """
    刪除指定節(jié)點的元素
    :param i: 指定節(jié)點
    :return: 刪除的指定節(jié)點元素值
    """
    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):
    """
    獲取某個節(jié)點的值
    :param i:
    :return:返回某個節(jié)點的值
    """
    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: 返回第一個值等于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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    Python查看多臺服務器進程的腳本分享

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

    詳解TensorFlow2實現前向傳播

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

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

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

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

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

    Python+Pillow進行圖形處理的示例詳解

    PIL:Python Imaging Library,已經是Python平臺事實上的圖像處理標準庫了。PIL功能非常強大,但API卻非常簡單易用。本文就將利用Pillow進行簡單的圖形處理,需要的可以參考一下
    2022-10-10
  • Python實現的數據結構與算法之快速排序詳解

    Python實現的數據結構與算法之快速排序詳解

    這篇文章主要介紹了Python實現的數據結構與算法之快速排序,詳細分析了快速排序的原理與Python實現技巧,需要的朋友可以參考下
    2015-04-04
  • Python-OpenCV基本操作方法詳解

    Python-OpenCV基本操作方法詳解

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

    Django 如何實現文件上傳下載

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

    Python 制作查詢商品歷史價格的小工具

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

最新評論

南和县| 文水县| 广丰县| 泸水县| 密山市| 昌江| 建湖县| 兴和县| 崇左市| 卢龙县| 哈尔滨市| 宁国市| 库尔勒市| 海安县| 永顺县| 思茅市| 甘肃省| 庄河市| 土默特左旗| 金沙县| 松潘县| 财经| 湾仔区| 盐亭县| 玉门市| 大姚县| 赫章县| 方城县| 元氏县| 偃师市| 屏东市| 巴东县| 梁山县| 涿州市| 威海市| 定边县| 沅陵县| 同心县| 隆尧县| 商河县| 西青区|