1. 程式人生 > >資料結構概述

資料結構概述

什麼是資料結構?

資料結構是指相互之間存在著一種或多種關係的資料元素的集合和該集合中資料元素之間的關係組成。簡單來說,資料結構就是設計資料以何種方式組織並存儲在計算機中。

資料結構的分類

資料結構按照其邏輯結構可分為線性結構、樹結構、圖結構

線性結構:資料結構中的元素存在一對一的相互關係
樹結構:資料結構中的元素存在一對多的相互關係
圖結構:資料結構中的元素存在多對多的相互關係

棧(Stack)是一個數據集合,可以理解為只能在一端進行插入或刪除操作的列表。
棧的特點:後進先出(last-in, first-out)
棧的基本操作:

進棧(壓棧):push
出棧:pop
取棧頂:gettop

棧的Python實現:

不需要自己定義,使用列表結構即可。
1.進棧函式:append
2.出棧函式:pop
3.檢視棧頂函式:li[-1]

連結串列

連結串列中每一個元素都是一個物件,每個物件稱為一個節點,包含有資料域key和指向下一個節點的指標next。通過各個節點之間的相互連線,最終串聯成一個連結串列。
節點定義:

class Node(object):    
    def __init__
(self, item):
self.item = item self.next = None

建立連結串列

頭插法:
尾插法:

雙鏈表

雙鏈表中每個節點有兩個指標:一個指向後面節點、一個指向前面節點。

雜湊表(Hash Table,又稱為散列表),是一種線性表的儲存結構。雜湊表由一個順序表(陣列)和一個雜湊函式組成。雜湊函式h(k)將元素k作為自變數,返回元素的儲存下標。

解決雜湊衝突——拉鍊法

拉鍊法:雜湊表每個位置都連線一個連結串列,當衝突發生時,衝突的元素將被加到該位置連結串列的最後。

雜湊表在Python中的應用:

字典與集合都是通過雜湊表來實現的;

二叉樹:

二叉樹的鏈式儲存:將二叉樹的節點定義為一個物件,節點之間通過類似連結串列的連結方式來連線。
節點定義:

class BiTreeNode:    
    def __init__(self, data): 
        self.data = data
        self.lchild = None
        self.rchild = None

待補充~

相關推薦

Java 集合 ,資料結構概述

collection集合分類: collection集合的遍歷: 使用迭代器進行遍歷 使用size()和get()方法結合進行遍歷 使用列表迭代器進行遍歷 用toArray()方法將集合轉化成陣列遍歷 注意:用列表迭代器進行遍歷時hasPrevious是判斷

資料結構: 一、資料結構概述

    (3)、索引儲存:除了建立儲存結點資訊外,還建立附加的索引表來標識結點的地址。索引表由若干個索引項組成    (4)、雜湊儲存:雜湊儲存,又稱hash儲存,是一種力圖將資料元素的儲存位置與關鍵碼之間建立確定對應關係的查詢技術。雜湊法儲存的基本思想是:由結點的關鍵碼值決定結點的儲存地址。雜湊技術除了可以

C與資料結構——概述(一)

    引言:  未進職場,真正接觸產品開發之前,基礎還是才是最重要的。大學的好處就是隨心所欲的學。怎麼理解就怎麼理解,不違規,不犯法。呵呵,從今天開始的一段時間,我開始將c語言和資料結構的理解寫寫,算大學的最後珍惜了。一千個讀者就有一千個哈姆雷特。錯與對無關緊要。也許今日膚

資料結構概述

什麼是資料結構? 資料結構是指相互之間存在著一種或多種關係的資料元素的集合和該集合中資料元素之間的關係組成。簡單來說,資料結構就是設計資料以何種方式組織並存儲在計算機中。 資料結構的分類

資料結構概述題庫

1、(華文課後題)關於演算法特性描述正確的有:  A、演算法保證計算結果的正確性  B、組成演算法的指令可以有限也可能無限  C、演算法描述中下一步執行的步驟不確定  D、演算法的有窮性指演算法必須在有限步驟內結束 解析 演算法保證計算結果的正確性。 指令必須有

資料結構概述

資料結構定義:        我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構儲存到主儲存器(記憶體)中,以及在此基礎上為實現某個功能而執行的相應的操作(比如查詢某個元祖,刪除某

java-資料結構-概述

資料結構 資料結構是計算機儲存、組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。 一、資料的邏輯結構:指反映資料元素之間的

資料結構——概述

什麼是資料結構 資料結構主要研究非數值計算程式問題中的操作物件以及他們之間的關係,不是研究複雜的演算法。 資料結構中的基本概念 資料 什麼是資料? 程式操作物件,用於描述客觀事物 資料的特點: 可以輸入到計算機 可以被計算機處理 資料是一個抽象的概念,將其分

資料結構概述

導圖 概念介紹 實戰練習 總結   由於參加自學考試,針對資料結構進行了專門的複習,從中不僅僅是獲得了知識,更多的是將理論知識轉換為實際應用,從而解決我們遇到的各種問題。 資料結構(Data

資料結構------線段樹1:概述與建樹

資料結構——線段樹   作為一枚蒟蒻,學習是重要的。最近,我接觸了一種新資料結構——線段樹。我一見,只是全身懵逼,[流汗],怎麼這麼藍? 於是,我開始努力學,努力學······(此處省略INF個努力學),決定寫一下部落格。   線段樹是一棵二叉樹,並與分治有著密切關係。 就說說

資料結構之圖篇(1):概述

圖的概念 1.有向圖(由節點和方向箭頭構成)無向圖(只有節點,相當於每條連線都是雙向的) 2.出度:頂點的箭頭指出;入度:頂點的箭頭指入; 3.有向圖:弧;無向圖:邊; 5.權值:弧或者邊上的資料 圖的儲存結構 陣列儲存 1.鄰接矩陣(頂點陣列【索引+資料】+鄰接矩

資料結構概述、線性表)

資料結構 本文大部分內容整理自程傑老師的《大話資料結構》 一、資料結構概述 分類: ①邏輯結構:面向問題的結構,主要是思維上的認知 1.集合結構 唯一的關係是大家都在一個集合內 2.線性結構 一對一 3.樹形結構 一對多 4.圖

python資料結構之串——概述和基本演算法

概述: 字串(string)簡稱串,也是一種線性結構。在python中和array差不多,因為py的陣列也可以包括各種字元(在C/Java一類的語法中,陣列必須是同一種資料型別的元素)。線性結構,有限序列,是主要特點。串其中可以包含各種元素,也是計算機主要處理的一類物件。因

資料結構與演算法學習背景概述

為什麼要學習資料結構與演算法? 1. 面試必備 站在一個比較現實且功利的角度來看,做計算機技術的大公司,如BAT、Google、Facebook,它們在招聘技術人員時,資料結構與演算法是必考查的知識點。如果想要進入這樣的大公司,那麼掌握資料結構與演算法就是必不可

Python資料結構與演算法概述

1 演算法初體驗 如果將最終寫好執行的程式比作戰場,我們程式設計師便是指揮作戰的將軍,而我們所寫的程式碼便是士兵和武器。 那麼資料結構和演算法是什麼?答曰:兵法! 我們可以不看兵法在戰場上肉搏,如此,可能會勝利,可能會失敗。即使勝利,可能也會付出巨大的代價。我們寫程式亦

Redis資料結構與全域性命令概述

前言 Redis 提供了 5 種資料結構。理解每種資料結構的特點,對於 Redis 的 開發運維 非常重要,同時掌握 Redis 的 單執行緒命令處理 機制,會使 資料結構 和 命令 的選擇事半功倍。 接下來的幾篇文章,將從如下幾個方面介紹 Redis 的幾種資料結構,命令使用及其應用場景。 預備知

Java架構學習(四十二)Zookeeper基礎&ZK概述&ZK資料結構&windows搭建ZK&Java操作ZK&ZK建立臨時節點&ZK的Watcher事件通知&架構面試

一、Zookeeper概述 1、什麼是Zookeeper? 答:Zookeeper是分散式開源框架,是分散式協調工具。 2、應用場景: 答:dubbo 是rpc遠端呼叫框架+Zookeeper作為註冊中心,(命名服務) 釋出訂閱 --- wathcher 對z

Unity實戰篇:實現連連看死局判定(一:資料結構的選擇以及基本思路概述

最近在做連連看小遊戲,整體完成的差不多,還差一個死局判定,若為死局,即重新洗牌。 由於專案結構較為繁雜,建議大家先下載原始碼 原始碼下載連結:https://gitee.com/NKG/UnityWorks/blob/master/UnityPackages/LinkUp.unitypa

資料結構與演算法概述

文章目錄資料結構演算法 #資料型別 程式語言中的資料型別是指具有預定義值得一個數據集合,常見的資料型別有:整數型,浮點型,字串,字元等。一般有兩種資料型別: 系統定義的資料型別(基本資料型別); 使用者自定義的資料型別(使用者自定義的類,可以將系統定義的資料型

資料結構與演算法C語言版分析概述

本節開始將帶領大家系統地學習資料結構,作為一門計算機專業大二學生的必修課程,該課程面對的目標人群為初步具備基本程式設計能力和程式設計思想的程式設計師(大一接觸了 C 語言或者 C++)。通過系統地學習資料結構,可以提高程式設計師分析問題和解決問題的能力。 首先,先來揭開資料結構的神祕面紗,看看什麼是資料結構