數據結構有什麼用?
數據結構是幹什麼用的呢?
鏈表的好處在於不用使用連續的內存,而是利用內存中分散的存儲單元存儲數據;而且鏈表的長度是可以任意增刪的,但數組一旦申請就不能改變,這根本不能滿足數據的動態存儲;再加上數組的刪除和插入元素會使大片的數據進行移動,這就增加了運算量;
好好學吧,剛開始我也覺得稀裡糊塗的,但考研不得不再看了幾遍,覺的數據結構的思想還是很好的,不說各種排序和圖、二叉樹的算法設計,單單一個棧就是很深奧的,他可以將一些複雜難懂的遞歸算法,拆解改寫,讓你對這些算法一目瞭然。。。。自己好好體會吧
有些東西並不向你看到的那麼簡單。。。。
數據結構幹嘛用的?
數據結構是計算機中存儲、組織數據的方式。通常情況下,精心選擇的數據結構可以帶來最優效率的算法。比較常用的數據結構有:數組(Array)、堆棧(Stack)、隊列(Queue)、鏈表(Linked List)、樹(Tree)、圖(Graph)、堆(Heap)、散列(Hash);在開發過程中可以根據不同的業務邏輯選擇不同的數據結構作為存儲的對象。另外也可以看看數據結構中的一些書籍,明白數據結構當中的原理,對於理清數據結構更有幫助,還有,數據結構與數據庫是不同的概念!
數據結構裡抽象數據類型定義有什麼用?
編寫一個數據類型作為基礎類型,這些抽象操作就轉換為該類型的成員函數,如果對外的接口就在公有域中,其他在保護或者私有按具體情況
編寫該基礎類型後,再聲明對象,通供對象使用這些操作了
學習算法和數據結構有什麼用
本人乃一個數據痴迷者,在計算機的道路上,也是一個數據結構的痴迷者,現在大學裡面和同學搞開發也痴迷於數據庫,我就我個人的理解給你談一談:首先,數據結構是一門計算機語言學的基礎學科,它不屬於任何一門語言,其體現的是幾乎所有標準語言的算法的思想。上面的概念有一些模糊,我們現在來具體說一說,相信你門的數據結構使用的是一門具體的語言比如C/C++語言來說明,那是為了輔助的學習數據結構,而數據結構本身不屬於任何語言(相信你把書上的程序敲到電腦裡面是不能通過的吧,其只是描述了過程,要調試程序,還需要修改和增加一些東西)。你們的書上開始應該在講究數據的物理存儲結構/邏輯存儲結構等概念,說明數據結構首先就是“數據的結構”,在內存上的存儲方式,就是物理的存儲結構,在程序使用人員的思想上它是邏輯的,比如:你們在C/C++中學習到鏈表,那麼鏈表是什麼一個概念,你們使用指針制向下一個結點的首地址,讓他們串聯起來,形成一個接一個的結點,就像顯示生活中的火車一樣。而這只是對於程序員的概念,但是在內存中存儲的方式是怎樣的那?對於你程序員來說這是“透明”的,其內部分配空間在那裡,都是隨機的,而內存中也沒有一個又一根的線將他們串聯起來,所以,這是一個物理與邏輯的概念,對於我們程序員只需要知道這些就可以了,而我們主要要研究的是“邏輯結構”。我可以給你一個我自己總結的一個概念:所有的算法必須基於數據結構生存。也就是說,我們對於任何算法的編寫,必須依賴一個已經存在的數據結構來對它進行操作,數據結構成為算法的操作對象,這也是為什麼算法和數據結構兩門分類不分家的概念,算法在沒有數據結構的情況下,沒有任何存在的意義;而數據結構沒有算法就等於是一個屍體而沒有靈魂。估計這個對於算法的初學者可能有點暈,我們在具體的說一些東西吧:我們在數據結構中最簡單的是什麼:我個人把書籍中線性表更加細化一層(這裡是為了便於理解在這樣說的):單個元素,比如:int i;這個i就是一個數據結構,它是一個什麼樣的數據結構,就是一個類型為int的變量,我們可以對它進行加法/減法/乘法/除法/自加等等一系列操作,當然對於單個元素我們對它的數據結構和算法的研究沒有什麼意義,因為它本來就是原子的,某些具體運算上可能算法存在比較小的差異;而提升一個層次:就是我們的線性表(一般包含有:順序表/鏈表)那麼我們研究這樣兩種數據結構主要就是要研究它的什麼東西那?一般我們主要研究他們以結構為單位(就是結點)的增加/刪除/修改/檢索(查詢)四個操作(為什麼有這樣的操作,我在下面說到),我們一般把“增加/刪除/修改”都把它稱為更新,對於一個結點,若要進行更新一類的操作比如:刪除,對於順序表來說是使用下標訪問方式,那麼我們在刪除了一個元素後需要將這個元素後的所有元素後的所有元素全部向前移動,這個時間是對於越長的順序表,時間越長的,而對於鏈表,沒有順序的概念,其刪除元素只需要將前一個結點的指針指向被刪除點的下一個結點,將空間使用free()函數進行釋放,還原給操作系統。當執行檢索操作的時候,由於順序表直接使用下標進行隨機訪問,而鏈表需要從頭開始訪問一一匹配才可以得到使用的元素,這個時間也是和鏈表的結點個數成正比的。所以我們每一種數據結構對於不同的算法會產生不同的效果,各自沒有絕對的好,也沒有絕對的不好,他們都有自己的應用價值和方式;這樣我們就可以在實際的項目開發中,對於內部的算法時間和空間以及項目所能提供的硬件能力進......
常用數據結構有哪些
數據元素相互之間的關係稱為結構。有四類基本結構:集合、線性結構、樹形結構、圖狀結構;
集合結構:除了同屬於一種類型外,別無其它關係
線性結構:元素之間存在一對一關係常見類型有: 數組,鏈表,隊列,棧,它們之間在操作上有所區別.例如:鏈表可在任意位置插入或刪除元素,而隊列在隊尾插入元素,隊頭刪除元素,棧只能在棧頂進行插
入,刪除操作.
樹形結構:元素之間存在一對多關係,常見類型有:樹(有許多特例:二叉樹、平衡二叉樹、查找樹等)
圖形結構:元素之間存在多對多關係,圖形結構中每個結點的前驅結點數和後續結點多個數可以任意
數據結構和C語言有什麼區別?
C語言是一種編程的語言,編程的語言有很多種。
而數據結構則是講的是關於一些數據的理論知識。
可以說不管什麼編程語言都能用到數據結構的知識,數據結構是程序設計基礎又核心的知識。
可以將c語言想象為一種語言,那麼數據結構就是一種說話的技巧,如何讓你說話更簡潔,有邏輯,容易讓人聽懂,這表達技巧不管你用中文或者ENGLISH都可以用上。
當然,如果你想成為一個優秀的程序設計人員,數據結互是必須掌握好的
學數據結構有什麼用
在可視化化程序設計的今天,藉助於集成開發環境可以很快地生成程序,程序設計不再是計
算機專業人員的專利。很多人認為,只要掌握幾種開發工具就可以成為編程高手,其實,這
是一種誤解。要想成為一個專業的開發人員,至少需要以下三個條件:
能夠熟練地選擇和設計各種數據結構和算法。
至少要能夠熟練地掌握一門程序設計語言。
熟知所涉及的相關應用領域的知識。
其中,後兩個條件比較容易實現,而第一個條件則需要花相當的時間和精力才能夠達到,
它是區分一個程序設計人員水平高低的一個重要標誌,數據結構貫穿程序設 計的始終,缺乏
數據結構和算法的深厚功底,很難設計出高水平的具有專業水準的應用程序。曾經有一本經
典計算機專業書籍叫做《數據結構+算法=程序》,也說 明瞭數據結構和算法的重要性。
《數據結構》是計算機科學與工程的基礎研究之一,掌握該領域的知識對於我們進一步
進行高效率的計算機程序開發非常重要。無論在中國還是在美國,《數據結 構》一直是大學
的計算機專業重要的專業基礎課。例如,在著名的美國的加州大學伯克利分校(著名的 BSD
Unix 的發源地,很多Unix 操作系統由它派生而來或帶有它的痕跡——例如FreeBSD、Sun 公
司的Solaris、IBM 的AIX),就用一個學 期開設《數據結構和算法》課程(在這之前,用一
個學期開設《C++程序設計》課程)。
實《數據結構》並不難。 在學習《數據結構》之前,要求學生有 C/C++基礎。可以這樣說,
C/C++是其他程序設計語言的基礎。掌握了 C/C++,學習其他語言就會易如反掌。例 如,微
軟的MFC 類庫基於C++;ATL 基於C++中的模板類;Java 語言基於C++思想,其編程風格與C++
差別很小;C++ Builder 又是基於C++;Delphi 中的有關對象的概念與C++中的對象幾乎完全
一致。C++相比其他語言具有與計算機硬件集合緊密、代碼效率 高,這是Java 語言和其他高
級語言所無法比擬的。這樣,C/C++對於學習計算機系統結構有很大的好處。
數據結構是對非數值型數據的處理
學了以後你就會對各種類型的數據的處理有了一個大概的掌握
比如我們的千千靜軟件它其實就是處理線性表數據
數據結構的圖 有什麼用?
wenku.baidu.com/...lhaM6W
自己看
java中的數據結構是個什麼概念?
1、枚舉(Enumeration)接口雖然它本身不屬於數據結構,但它在其他數據結構的範疇裡應用很廣。 枚舉(The Enumeration)接口定義了一種從數據結構中取回連續元素的方式。
2、位集合類實現了一組可以單獨設置和清除的位或標誌。
該類在處理一組布爾值的時候非常有用,你只需要給每個值賦值一"位",然後對位進行適當的設置或清除,就可以對布爾值進行操作了。
3、向量(Vector)類和傳統數組非常相似,但是Vector的大小能根據需要動態的變化。
和數組一樣,Vector對象的元素也能通過索引訪問。
使用Vector類最主要的好處就是在創建對象的時候不必給對象指定大小,它的大小會根據需要動態的變化。
4、棧(Stack)實現了一個後進先出(LIFO)的數據結構。
你可以把棧理解為對象的垂直分佈的棧,當你添加一個新元素時,就將新元素放在其他元素的頂部。
當你從棧中取元素的時候,就從棧頂取一個元素。換句話說,最後進棧的元素最先被取出。
5、字典(Dictionary) 類是一個抽象類,它定義了鍵映射到值的數據結構。
當你想要通過特定的鍵而不是整數索引來訪問數據的時候,這時候應該使用Dictionary。
由於Dictionary類是抽象類,所以它只提供了鍵映射到值的數據結構,而沒有提供特定的實現。
6、哈希表
Hashtable類提供了一種在用戶定義鍵結構的基礎上來組織數據的手段。
例如,在地址列表的哈希表中,你可以根據郵政編碼作為鍵來存儲和排序數據,而是通過人的名字。
哈希表鍵的具體含義完全取決於哈希表的使用情景和它包含的數據。
7、屬性
roperties 繼承於 Hashtable.Properties 類表示了一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。
Properties 類被許多Java類使用。例如,在獲取環境變量時它就作為System.getProperties()方法的返回值。
算法和數據結構有什麼區別??
數據結構是算法實現的基礎,算法總是要依賴於某種數據結構來實現的。往往是在發展一種算法的時候,構建了適合鼎這種算法的數據結構。一種數據結構如果脫離了算法,那還有什麼用呢?實際上也不存在一本書單純的講數據結構,或者單純的講算法。當然兩者也是有一定區別的,算法更加的抽象一些,側重於對問題的建模,而數據結構則是具體實現方面的問題了,兩者是相輔相成的。