亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使?用Python仿照C語言來實現線性表的順序存儲結構

發布時間:2022-04-02 11:14:52 來源:億速云 閱讀:110 作者:iii 欄目:編程語言

今天小編給大家分享一下怎么使用Python仿照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):
    """
    相當于初始化線性表, 即創建頭結點
    頭節點為空節點,占據位置號為0
    創建好的表即為: 頭節點[0]->節點[1]->節點[2]->節點[3]->節點[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 個節點
      j += 1
      p = p.next
    if p is None:  # 未找到邏輯位序為 i-1 的節點
      raise IndexError("Index is out of range!")
    else:  # 找到邏輯位序為 i-1 的節點
      tmp = Node(elem)
      tmp.next = p.next
      p.next = tmp
      self.length += 1
 
  def delete(self, i):
    """
    刪除指定節點的元素
    :param i: 指定節點
    :return: 刪除的指定節點元素值
    """
    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):
    """
    獲取某個節點的值
    :param i:
    :return:返回某個節點的值
    """
    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仿照C語言來實現線性表的順序存儲結構”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德令哈市| 泾川县| 台南县| 诏安县| 固安县| 卓尼县| 苍南县| 苏尼特右旗| 湾仔区| 广州市| 华宁县| 丰原市| 定远县| 鄂州市| 宣化县| 新野县| 重庆市| 江城| 临泉县| 龙泉市| 明光市| 临海市| 卢龙县| 高雄市| 合山市| 汝州市| 晋中市| 库车县| 洛阳市| 乌兰察布市| 黎城县| 银川市| 垦利县| 天峻县| 黄骅市| 轮台县| 慈溪市| 雅江县| 江门市| 亳州市| 福泉市|