1樓:sky不用太多
在有向圖中,度又分為入度和出度。
入度 (in-degree) :以某頂點為弧頭,終止於該頂點的弧的數目稱為該頂點的入度
出度 (out-degree) :以某頂點為弧尾,起始於該頂點的弧的數目稱為該頂點的出度
一、資料的邏輯結構:指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後件關係,而與他們在計算機中的儲存位置無關。邏輯結構包括:
集合資料結構中的元素之間除了「同屬一個集合」 的相互關係外,別無其他關係;
2.線性結構
資料結構中的元素存在一對一的相互關係;
3.樹形結構
資料結構中的元素存在一對多的相互關係;
4.圖形結構
資料結構中的元素存在多對多的相互關係。
二、資料的物理結構:指資料的邏輯結構在計算機儲存空間的存放形式。[1]
資料的物理結構是資料結構在計算機中的表示(又稱映像),它包括資料元素的機內表示和關係的機內表示。由於具體實現的方法有順序、連結、索引、雜湊等多種,所以,一種資料結構可表示成一種或多種儲存結構。
資料元素的機內表示(映像方法): 用二進位制位(bit)的位串表示資料元素。通常稱這種位串為節點(node)。
當資料元素有若干個資料項組成時,位串中與個資料項對應的子位串稱為資料域(data field)。因此,節點是資料元素的機內表示(或機內映像)。
關係的機內表示(映像方法):資料元素之間的關係的機內表示可以分為順序映像和非順序映像,常用兩種儲存結構:順序儲存結構和鏈式儲存結構。
順序映像藉助元素在儲存器中的相對位置來表示資料元素之間的邏輯關係。非順序映像藉助指示元素儲存位置的指標(pointer)來表示資料元素之間的邏輯關係。
2樓:
是圖論。可以把人與人之間為識的關係對應到一個圖中。如果a認識b就a->b連一條邊。
資料結構 求有向圖中每個頂點的出度和入度的演算法 50
3樓:
正好在做,搜半天沒有解說,
入度:能夠進入當前頂點的個數
出度:當前頂點的最大長大。
4樓:匿名使用者
for(int i=0;ito]++;}
資料結構求大神啊、(1)每個頂點的入度和出度(2)鄰接矩陣和入邊圖示(3)強連通分量
5樓:如楓
入度就是有多少條邊指向這個點,出度就是從這個點出發有多少條邊,這個不難吧
點 入度 出度
1 2 1
2 2 2
3 1 3
4 3 0
5 2 3
6 1 2
鄰接矩陣就是一個二維陣列,行列都是頂點,行表示開始,列表示結束,這是一個無權圖,如果行到列有指向的邊,則用1表示,如果沒有,就用0,這個也不難吧
1 2 3 4 5 6
1 0 0 0 1 0 0
2 1 0 1 0 0 0
3 0 0 0 1 1 1
4 0 0 0 0 0 0
5 1 1 0 1 0 0
6 0 0 0 0 1 0
最上和最左的1 2 3 4 5 6是行標和列標,寫矩陣的時候就不用寫了。然後把剩下的放在一箇中括號裡面就行了。
入邊圖示我就不知道是什麼了
強連通分量:有向圖強連通分量在有向圖g中,如果兩個頂點vi,vj間(vi>vj)有一條從vi到vj的有向路徑,同時還有一條從vj到vi的有向路徑,則稱兩個頂點強連通(strongly
connected)。如果有向圖g的每兩個頂點都強連通,稱g是一個強連通圖。有向圖的極大強連通子圖,稱為強連通分量
這裡強連通分量應該就是去掉頂點1、4以及和頂點1、4相連的邊所剩下的子圖吧。這個我也有點不確定。
資料結構學的到底是什麼,和演算法的關係
6樓:百度使用者
本人乃一個資料痴迷
者,在計算機的道路上,也是一個資料結構的痴迷者,現在大學裡面和同學搞開發也痴迷於資料庫,我就我個人的理解給你談一談:
首先,資料結構是一門計算機語言學的基礎學科,它不屬於任何一門語言,其體現的是幾乎所有標準語言的演算法的思想。
上面的概念有一些模糊,我們現在來具體說一說,相信你門的資料結構使用的是一門具體的語言比如c/c++語言來說明,那是為了輔助的學習資料結構,而資料結構本身不屬於任何語言(相信你把書上的程式敲到電腦裡面是不能通過的吧,其只是描述了過程,要除錯程式,還需要修改和增加一些東西)。你們的書上開始應該在講究資料的物理儲存結構/邏輯儲存結構等概念,說明資料結構首先就是「資料的結構」,在記憶體上的儲存方式,就是物理的儲存結構,在程式使用人員的思想上它是邏輯的,比如:
你們在c/c++中學習到連結串列,那麼連結串列是什麼一個概念,你們使用指標制向下一個結點的首地址,讓他們串聯起來,形成一個接一個的結點,就像顯示生活中的火車一樣。而這只是對於程式設計師的概念,但是在記憶體中儲存的方式是怎樣的那?對於你程式設計師來說這是「透明」的,其內部分配空間在那裡,都是隨機的,而記憶體中也沒有一個又一根的線將他們串聯起來,所以,這是一個物理與邏輯的概念,對於我們程式設計師只需要知道這些就可以了,而我們主要要研究的是「邏輯結構」。
我可以給你一個我自己總結的一個概念:所有的演算法必須基於資料結構生存。也就是說,我們對於任何演算法的編寫,必須依賴一個已經存在的資料結構來對它進行操作,資料結構成為演算法的操作物件,這也是為什麼演算法和資料結構兩門分類不分家的概念,演算法在沒有資料結構的情況下,沒有任何存在的意義;而資料結構沒有演算法就等於是一個屍體而沒有靈魂。
估計這個對於演算法的初學者可能有點暈,我們在具體的說一些東西吧:
我們在資料結構中最簡單的是什麼:我個人把書籍中線性表更加細化一層(這裡是為了便於理解在這樣說的):單個元素,比如:
int i;這個i就是一個資料結構,它是一個什麼樣的資料結構,就是一個型別為int的變數,我們可以對它進行加法/減法/乘法/除法/自加等等一系列操作,當然對於單個元素我們對它的資料結構和演算法的研究沒有什麼意義,因為它本來就是原子的,某些具體運算上可能演算法存在比較小的差異;而提升一個層次:就是我們的線性表(一般包含有:順序表/連結串列)那麼我們研究這樣兩種資料結構主要就是要研究它的什麼東西那?
一般我們主要研究他們以結構為單位(就是結點)的增加/刪除/修改/檢索(查詢)四個操作(為什麼有這樣的操作,我在下面說到),我們一般把「增加/刪除/修改」都把它稱為更新,對於一個結點,若要進行更新一類的操作比如:刪除,對於順序表來說是使用下標訪問方式,那麼我們在刪除了一個元素後需要將這個元素後的所有元素後的所有元素全部向前移動,這個時間是對於越長的順序表,時間越長的,而對於連結串列,沒有順序的概念,其刪除元素只需要將前一個結點的指標指向被刪除點的下一個結點,將空間使用free()函式進行釋放,還原給作業系統。當執行檢索操作的時候,由於順序表直接使用下標進行隨機訪問,而連結串列需要從頭開始訪問一一匹配才可以得到使用的元素,這個時間也是和連結串列的結點個數成正比的。
所以我們每一種資料結構對於不同的演算法會產生不同的效果,各自沒有絕對的好,也沒有絕對的不好,他們都有自己的應用價值和方式;這樣我們就可以在實際的專案開發中,對於內部的演算法時間和空間以及專案所能提供的硬體能力進行綜合評估,以讓自己的演算法能夠更加好。
(在這裡只提到了基於資料結構的一個方面就是:速度,其實演算法的要素還應該包括:穩定性、健壯性、正確性、有窮性、可理解性、有輸入和輸出等等)
為什麼要以結點方式進行這些亂七八糟的操作那?首先明確一個概念就是:對於過程化程式設計語言所提供的都是一些基礎第一資訊,比如一些關鍵字/保留字/運算子/分界符。
而我們需要用程式解決現實生活中的問題,比如我們要程式記錄某公司人員的情況變化,那麼人員這個資料型別,在程式設計語言中是沒有的,那麼我們需要對人員的內部資訊定義(不可能完全,只是我們需要那些就定義那些),比如:年齡/性別/姓名/出生日期/民族/工作單位/職稱/職務/工資狀態等,那麼就可以用一些c/c++語言描述了,如年齡我們就可以進行如下定義:
int age;/*age變數,表示人員公司人員的年齡*/
同理進行其他的定義,我們用結構體或類把他們封裝成自定義資料型別或類的形式,這樣用他們定義的就是一個人的物件的了,它內部包含了很多的模板資料了。
我就我個人的經歷估計的**量應該10000以內的(我個人的經理:只是建議,從你的第一行**開始算,不論程式正確與否,不論那一門語言,作為一個標準程式設計師需要十萬行的**的功底(這個是我在大學二年級感覺有一定時候的大致資料,不一定適合其他人),而十萬行**功底一般需要四門基礎遠支撐,若老師沒有教,可以自學一些語言)。
7樓:匿名使用者
所有的演算法,乃至數學在實際運用中都是要根據不同的資料來選擇不同的方法,所以一般學習過演算法和資料結構的人都會越發的認識到,資料才是程式的中心,只有找到了一個組織資料的最佳方式,演算法的運用才會事半功倍。
一般來說我覺得先學演算法比較好,但演算法和資料結構都是相輔相成的,要學好演算法要有一定資料結構的基礎,要學資料結構亦要有演算法基礎。但演算法比資料結構更重要一些,因為沒有演算法只有資料結構是沒用的。
資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映一個資料的內部構成,即一個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。
從計算機的角度講,程式是用一種計算機能理解並執行的計算機語言描述解決問題的方法步驟。程式設計:是分析解決問題的方法步驟,並將其記錄下來的過程。演算法:解決問題的方法步驟。
1.資料結構或者演算法之類不是直接執行的東西。 資料結構,大約就是關於怎樣使用變數能更有效率的理論。
演算法麼,比較象數學公式,不過代進去的不是資料或變數,而是c的語句。是關於怎樣安排程式才能事半功倍的理論。
8樓:匿名使用者
資料結構和演算法其實學習的是一種思維,資料結構常見的有
1,陣列
9樓:匿名使用者
資料結構與演算法的重要性,是眾所周知的,作為開發人員都想攻克它,但大部分人堅持一下都放棄了。可能是因為知識點太多、不知從何開始學起,也可能是沒找對學習方法,也可能是沒找到好的學習資料。如果你還在迷茫中,相信本課程能夠幫到你,是你徹底掌握資料結構與演算法的美好開始。
為了保證同學們能循序漸進、全方位地掌握資料結構與演算法,mj將本課程將設計為至少3個季度(預計共100小時左右)
第1季側重於經典資料結構(比如二叉樹、雜湊表、trie等)
第2季側重於更高階的資料結構(比如圖、並查集、跳錶、布隆過濾器等)以及各種演算法
(比如排序、kmp、貪心、分治、動態規劃等)
第3季側重於leetcode題庫和演算法面試真題(比如海量資料處理、字串處理等)
在掌握資料結構的前提下,再學習常用的經典演算法,最後再進行大量的演算法題目練習,將會是個非常利於消化吸收、比較合理的學習路線。整套課程學習下來,相信以後不管是演算法面試,還是工作應用,都能夠熟練使用資料結構與演算法。
同心度和同軸度是概念嗎謝謝,同心度和同軸度是一個概念嗎??? 謝謝
是的,同心度是同軸度的特殊形式。當被測要素為圓心 點 薄型工件上的孔或軸的軸線時,可視被測軸線為被測點,它們對基準軸線的同軸度即為同心度。故對同心度的測量可以進行投影測量。同軸度是評價圓柱形工件的一項重要技術指標,同軸度誤差直接影響著工件的裝配和使用。但當工件的被測元素軸線特別短時,要評價其同軸度非...
什麼是色相 飽和度和明度,PS色相 飽和度 明度是什麼詳細點的,謝了
色相,指佛教用語,即物質的特徵 引申為人的聲音容貌 色彩三要素之一,即色彩相貌。色相,即各類色彩的相貌稱謂,如大紅 普藍 檸檬黃等。色相是色彩的首要特徵,是區別各種不同色彩的最準確的標準。事實上任何黑白灰以外的顏色都有色相的屬性,而色相也就是由原色 間色和複色來構成的。飽和度是指色彩的鮮豔程度,也稱...
什麼是時間複雜度空間複雜度
1 時間複雜度是指執行演算法所需要的計算工作量。時間複雜度是一個函式,它定性描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。2 空間複雜度是指執行這個演算法所需要的記憶體空間。空間複雜度需要考慮在執行過程中為區域...