成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【數(shù)據(jù)結(jié)構(gòu)】線性表:Python語言描述

wua_wua2012 / 540人閱讀

摘要:線性表的和采用了順序表的實(shí)現(xiàn)技術(shù),具有順序表的所有性質(zhì)。刪除鏈表應(yīng)丟棄這個(gè)鏈表里的所有結(jié)點(diǎn)。在語言中,就是檢查相應(yīng)變量的值是否為。也就是說,插入新元素的操作是通過修改鏈接,接入新結(jié)點(diǎn),從而改變表結(jié)構(gòu)的方式實(shí)現(xiàn)的。

1.線性表

Python的listtuple采用了順序表的實(shí)現(xiàn)技術(shù),具有順序表的所有性質(zhì)。

2.鏈接表

單向鏈接表 的結(jié)點(diǎn)是一個(gè)二元組。

其表元素域elem保存著作為表元素的數(shù)據(jù)項(xiàng)(或者數(shù)據(jù)項(xiàng)的關(guān)聯(lián)信息),鏈接域next里保存著同一個(gè)表里的下一個(gè)結(jié)點(diǎn)的標(biāo)識(shí)。

首先定義一個(gè)簡單的表結(jié)點(diǎn)類:

class LNode:
  def __init__(self,elem,next_=None):
    self.elem = elem
    self.next = next_

這個(gè)類里只有一個(gè)初始化方法,它給對(duì)象的兩個(gè)域賦值。方法的第二個(gè)參數(shù)用名字next_,是為了避免與Python標(biāo)準(zhǔn)函數(shù)next重名。這也是Python程序中命名的一個(gè)慣例。第二個(gè)參數(shù)還提供了默認(rèn)值,只是為了使用方便。

2.1 基本鏈表操作 創(chuàng)建空鏈表

只需要把相應(yīng)的表頭變量設(shè)置為空鏈接,在Python語言中將其設(shè)置為None。

刪除鏈表

應(yīng)丟棄這個(gè)鏈表里的所有結(jié)點(diǎn)。這個(gè)操作的實(shí)現(xiàn)與具體的語言環(huán)境有關(guān)。在一些語言(如C語言)里,需要通過明確的操作釋放一個(gè)個(gè)結(jié)點(diǎn)所用的存儲(chǔ)。在Python中,這個(gè)操作很簡單,只需簡單地將表指針賦值為None,就拋棄了鏈表原有的所有結(jié)點(diǎn)。Python解釋器的存儲(chǔ)管理系統(tǒng)會(huì)自動(dòng)回收不用的存儲(chǔ)。

判斷表是否為空

將表頭變量的值與空鏈接比較。在Python語言中,就是檢查相應(yīng)變量的值是否為None。

判斷表是否滿

一般而言鏈表不會(huì)滿,除非程序用光了所有可用的存儲(chǔ)空間。

加入元素

在鏈表里加入新元素時(shí),并不需要移動(dòng)已有的數(shù)據(jù),只需為新元素安排一個(gè)新結(jié)點(diǎn),然后根據(jù)操作要求,把新結(jié)點(diǎn)連在表中的正確元素。也就是說,插入新元素的操作是通過修改鏈接,接入新結(jié)點(diǎn),從而改變表結(jié)構(gòu)的方式實(shí)現(xiàn)的。

表首端加入

創(chuàng)建一個(gè)新結(jié)點(diǎn)并存入數(shù)據(jù)

把原數(shù)據(jù)首結(jié)點(diǎn)的鏈接存入新結(jié)點(diǎn)的鏈接域next,這一操作將原表的一串結(jié)點(diǎn)鏈接在剛創(chuàng)建的新結(jié)點(diǎn)之后

修改表頭變量,使之指向新結(jié)點(diǎn),這個(gè)操作使新結(jié)點(diǎn)實(shí)際成為表頭變量所指的結(jié)點(diǎn),即表的首結(jié)點(diǎn)

q = LNode(13)
q.next = head.next
head = q

注意,即使在插入前head指的是空表,上面三步也能正確完成工作。這個(gè)插入只是一次安排新存儲(chǔ)和幾次賦值,操作具有常量時(shí)間復(fù)雜度。

一般情況的元素插入

要想在單鏈表里的某位置插入一個(gè)新結(jié)點(diǎn),必須先找到該位置之前的那個(gè)結(jié)點(diǎn),因?yàn)樾陆Y(jié)點(diǎn)需要插入它的后面,需要修改它的next域

設(shè)變量pre已指向要插入元素位置的前一結(jié)點(diǎn),操作也分為三步:

q = LNode(13)
q.next = pre.next
pre.next = q
刪除元素

刪除表首元素

一般情況的元素刪除

掃描、定位和遍歷 鏈表操作的復(fù)雜度 求表的操作
def length(head):
    p,n = head,0
    while p is not None:
        n += 1
        p = p.next
    return n
3.3.3 單鏈表類的實(shí)現(xiàn)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44209.html

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)線性

    摘要:線性表是最基本的數(shù)據(jù)結(jié)構(gòu)之一,在實(shí)際程序中應(yīng)用非常廣泛,它還經(jīng)常被用作更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)基礎(chǔ)。鏈表之單鏈表線性表的定義,它是一些元素的序列,維持著元素之間的一種線性關(guān)系。 線性表學(xué)習(xí)筆記,python語言描述-2019-1-14 線性表簡介 在程序中,經(jīng)常需要將一組(通常是同為某個(gè)類型的)數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含...

    leoperfect 評(píng)論0 收藏0
  • Tensorflow代碼解析(二)

    摘要:為了進(jìn)一步了解的邏輯,圖對(duì)和進(jìn)行了展開分析。另外,在命名空間中還隱式聲明了控制依賴操作,這在章節(jié)控制流中相關(guān)說明。簡述是高效易用的開源庫,有效支持線性代數(shù),矩陣和矢量運(yùn)算,數(shù)值分析及其相關(guān)的算法。返回其中一塊給用戶,并將該內(nèi)存塊標(biāo)識(shí)為占用。 3. TF 代碼分析初步3.1 TF總體概述為了對(duì)TF有整體描述,本章節(jié)將選取TF白皮書[1]中的示例展開說明,如圖 3 1所示是一個(gè)簡單線性模型的TF...

    zhigoo 評(píng)論0 收藏0
  • 線性結(jié)構(gòu) 數(shù)組與鏈

    摘要:線性結(jié)構(gòu)數(shù)組與鏈表線性結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)有兩端,有時(shí)被稱為左右,某些情況被稱為前后。將兩個(gè)線性數(shù)據(jù)結(jié)構(gòu)區(qū)分開的方法是添加和移除項(xiàng)的方式,特別是添加和移除項(xiàng)的位置。相對(duì)于數(shù)組,鏈表的好處在于,添加或移除元素的時(shí)候不需要移動(dòng)其他元素。 線性結(jié)構(gòu) 數(shù)組與鏈表 線性結(jié)構(gòu) 線性數(shù)據(jù)結(jié)構(gòu)有兩端,有時(shí)被稱為左右,某些情況被稱為前后。你也可以稱為頂部和底部,名字都不重要。將兩個(gè)線性數(shù)據(jù)結(jié)構(gòu)區(qū)分開的方法...

    xi4oh4o 評(píng)論0 收藏0
  • 線性結(jié)構(gòu) 數(shù)組與鏈

    摘要:線性結(jié)構(gòu)數(shù)組與鏈表線性結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)有兩端,有時(shí)被稱為左右,某些情況被稱為前后。將兩個(gè)線性數(shù)據(jù)結(jié)構(gòu)區(qū)分開的方法是添加和移除項(xiàng)的方式,特別是添加和移除項(xiàng)的位置。相對(duì)于數(shù)組,鏈表的好處在于,添加或移除元素的時(shí)候不需要移動(dòng)其他元素。 線性結(jié)構(gòu) 數(shù)組與鏈表 線性結(jié)構(gòu) 線性數(shù)據(jù)結(jié)構(gòu)有兩端,有時(shí)被稱為左右,某些情況被稱為前后。你也可以稱為頂部和底部,名字都不重要。將兩個(gè)線性數(shù)據(jù)結(jié)構(gòu)區(qū)分開的方法...

    edagarli 評(píng)論0 收藏0
  • 新書《全棧數(shù)據(jù)之門》完整目錄

    摘要:全棧數(shù)據(jù)之門前言自強(qiáng)不息,厚德載物,自由之光,你是我的眼基礎(chǔ),從零開始之門文件操作權(quán)限管理軟件安裝實(shí)戰(zhàn)經(jīng)驗(yàn)與,文本處理文本工具的使用家族的使用綜合案例數(shù)據(jù)工程,必備分析文件探索內(nèi)容探索交差并補(bǔ)其他常用的命令批量操作結(jié)語快捷鍵,之門提高效率光 showImg(https://segmentfault.com/img/bVK0aK?w=350&h=350); 全棧數(shù)據(jù)之門 前言 自強(qiáng)不息,...

    yibinnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

wua_wua2012

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<