1. 程式人生 > >連結串列學習(3)

連結串列學習(3)

1、線性結構與非線性結構,主要看元素之間的關係。若是一對一關係就是線性表,如果不是一對一就是非線性。

2LS=((a,b,c),(d,e,f));

tail(LS)=((d,e,f));

head(tail(LS))=(d,e,f);

tail(head(tail(LS)))=(e,f);

head(tail(head(tail(LS))))=e;

任何一個非空廣義表的表頭是表中第一個元素,可以是原子,也可以是子表,而其表尾必定是子表。

廣義表的head操作,取出的元素是什麼,那麼結果就是什麼。但是tail操作取出的元素外必須加一個表“()”

3單迴圈連結串列的主要優點:從表中任一結點出發都能掃描整個連結串列。

單迴圈表由於不知道前趨,所以在刪除時候必須從需要刪除的結點的前趨下手,因此並非單迴圈連結串列的有點。

頭指標是連結串列的必要元素,不管連結串列是否為空,頭指標都不為空。

連結串列在記憶體中都是獨立的儲存單元,通過地址進行指向連結,不論是否是單迴圈還是雙迴圈連結串列,在進行插入操作時都會斷開。

4將兩個各有n個元素的有序表歸併成一個有序表,其最多的比較次數是:2n-1

分析:前n-1個每個最多比較兩次,最後一個只比較一次。

5n個記錄的線性表進行快速排序為減少演算法的遞迴深度,每次分割槽後,先處理較短的部分。

6、已知兩個長度分別為mn的升序連結串列,若將它們合成一個長度為m+n的降序連結串列,則最壞的情況下時間複雜度是:

O(m+n).

分析:最好、最壞情況,時間複雜度都是O(m+n),因為題目要求是兩個升序連結串列,合併成一個降序連結串列。

補充:將N條長度均為M的有序連結串列進行合併,合併以後的連結串列也保持有序,時間複雜度為:O(N*M*logN)

補充2:兩個無環點連結串列L1L2,其長度分別為mnm>n),判定L2L1是否相交的時間複雜度:O(m+n),空間複雜度:O(1)

7單向連結串列:

1)如果兩個單向連結串列相交,尾結點一定相同。

(如果兩個連結串列都為單鏈表,那麼一旦相交意味著兩個節點的next相同,之後也都相同,所以尾結點也相同)

2)快慢指標是判斷一個單向連結串列有沒有環的一種方法。(

如果一個是單鏈表,一個有環,就不可能存在相交的情況。這其中判斷連結串列是否有環就是用的快慢指標法:設定兩個指標,一個跳一格,一個跳兩格,追上自然有環。)

3)有環的單向連結串列跟無環的單向連結串列不可能相交。

4)兩個單向連結串列之間相交可以存在環。(如果都是迴圈連結串列,遍歷其中一個連結串列,直到找到與另一連結串列中某結點相同的結點就算是相交。)

8、設順序表長度為n,最壞情況下,

1)尋找最大項比較次數:n-1

2)順序查詢比較次數:n

3)快速排序比較次數:n*(n-1)/2

4)堆排序:nlogn

9、線性表元素個數nn>=0)定義為線性表的長度、

10、帶頭結點的單鏈表head為空的判定條件:head->next==NULL;

帶頭結點的迴圈連結串列:head->next==head;

不帶頭結點的單鏈表head為空的判定條件:head==NULL

相關推薦

連結串列學習3

1、線性結構與非線性結構,主要看元素之間的關係。若是一對一關係就是線性表,如果不是一對一就是非線性。 2、LS=((a,b,c),(d,e,f)); tail(LS)=((d,e,f)); head

1建立二叉樹的二叉連結串列2寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 4求二叉樹的所有葉子及結點總數。

(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu

基於Qt的OpenGL可編程管線學習3- 使用Instanced方式繪制

qt opengl shader instanced 繪制多個重復的模型時,使用Instanced方式繪制可以大大加快顯然速度。繪制效果如下圖所示:1、Vertex Shader中定義如下:attribute vec3 pos; attribute vec2 coord; attribute

OSChinaclient源代碼學習3--輪詢機制的實現

man data 本地變量 其它 失敗 cbo cancel seh ref 主要以OSChina Androidclient源代碼中Notice的輪詢機制進行解讀。 一、基礎知識 一般IM(即使通訊)的實現有兩種方式:推送和輪詢,推送就是se

PYTHON設計模式學習3:Singleton pattern

blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------

tcpdump 學習3:MySQL Query

說明 server gen rollback 命令 復雜 pro 關於 col 在MySQL線上環境我們一般只打開了binary log,slow log,有時我們需要查看general log呢?因為該log記錄所有的請求,打開該日誌肯定給磁盤造成很大壓力,IO能力有所下

Django學習3模板定制

ase 我們 頻繁 ping upload shang star 2.0 asc   在Django學習(一)一首情詩中,views.py中HTML被直接硬編碼在代碼之中,雖然這樣便於解釋視圖是如何工作的,但直接將HTML硬編碼到視圖卻不算一個好主意。因為: 對頁面設計進

機器學習基石筆記11——機器可以怎樣學習3

1.2 div esc 怎樣 學習 clas regress 1.3 1.4 Lecture 11: Linear Models for Classification 11.1 Linear Models for Binary Classification 11.2 S

java入門學習3—循環,選擇,基礎算法,API概念

思想 冒泡 方法 就是 最大的 接口 兩個 循環控制 得到 1、順序結構:也就是順著程序的前後關系,依次執行。2、選擇分支:利用if..else , / switch(){case [ 這個必須是常量]:}; / if..else if….. ….else..等語句讓程序在

web前端學習3:認識HTML基本標簽

鼠標 首頁 一份 格式 所在地 有著 同時 網上 今天 本章主旨:   介紹常用的文本相關標簽,如<h>,<p>,<a>;簡介常見的HTML標簽屬性,如title屬性,href屬性,id/class屬性等;重點掌握<a>標簽。

Python爬蟲學習3

collect nbsp pri div time urlparse links ews 是否 在慕課網學習並創建了一個簡單的爬蟲包,爬取百度百科相關詞條信息 程序中會用到第三方解析包(BeautifulSoup4),Windows環境下安裝命令:pip install B

java===java基礎學習3---數據類型轉換,運算符級別,枚舉類型

test [] sof 進度 如果 nbsp math 否則 枚舉 數據類型轉換: 有的時候,程序需要將數據類型,比如 int + float ,結果是float, 這裏的int就被轉換為float類型,屬於合法轉換。 Java中的合法轉換如下圖: 紅色表示無信息丟失的轉

perl學習3模式匹配與正則表達式

.... 表達式 正則表達 pos 匹配模式 模式匹配 $2 多個 info 一:模式匹配中的特殊字符 1:  點號 .     匹配任何單個字符(換行符\n除外) 2:  反斜線 \     轉義字符,用於特殊符號前,使其失去特殊字符的作用變成普通字符 3:  +   

Python3玩轉兒 機器學習3

分享圖片 多項式 pca 圖像 可視化 情況 異常 ... 學習 機器學習算法可以分為: 監督學習 非監督學習 半監督學習 增強學習 監督學習:給機器的訓練數據擁有“標記”或者“答案”,例如: 我們需要告訴機器左邊的畫面是一只狗,而右邊的照片是一只貓。同理對於MNIS

完全用Deepin Linux娛樂、工作、學習3-- 無線網卡及藍牙設備驅動篇

系統/運維 Linux 娛樂 1、異常說明 在前面木子已經講到了關於顯卡驅動及CPU微碼補丁更新,今天木子要講的是關於適配藍牙及無線網卡設備的驅動問題,它不僅僅適用於新驅動的安裝,也適用於驅動異常的修復。默認情況下木子的筆記本安裝Deepin Linux後是自帶驅動的,只是在折騰的過

Spring學習3:Spring概述轉載

效率 調度 jpa 源代碼 一個 維護 html www hiberna 1. Spring是什麽?   Spring是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用於簡化企業級應用程序開發。   在面向對

Redis學習3-redis啟動

clas CA shu 本機 運行 指定 默認端口 bsp moni 前端啟動 tomcat,redis,mysql的端口號: mysql 3306 tomcat 8088 redis 6379 一,啟動redis服務: 例如當前位置在

Spring學習3:IOC基礎轉載

目標 發生 由於 不同 擴展 通過 new 包括 control 一. IoC是什麽   Ioc—Inversion of Control,即“控制反轉”,不是什麽技術,而是一種設計思想。在Java開發中,Ioc意味著將你設計好的對象交給容器控制,而不是傳統的在你的對象內部

python學習3--讀取配置文件

封裝 pri 配置文件 ret charm 127.0.0.1 os.path 關於 database 一、 關於配置文件 ini文件由三部分組成,分別為節、鍵、值。 節   [section] 參數(鍵=值)   name=value 註解   

Arduino學習3

Arduino的程式基礎: 程式框架 1、宣告變數及介面名稱(int val;int ledPin=13;) 2、setup()——在程式開始時使用,可以初始化變數、介面模式、啟用庫等 3、loop()——在setup()函式之後,即初始化之後,loop()函式讓定義的程式迴圈地