摘要:程序設計數(shù)據結構算法數(shù)據結構數(shù)據結構就是關系,沒錯,就是數(shù)據元素相互之間存在的一種或多種特定關系的集合。物理結構是指數(shù)據的邏輯結構在計算機中的存儲形式。
程序設計=數(shù)據結構+算法數(shù)據結構
數(shù)據結構就是關系,沒錯,就是數(shù)據元素相互之間存在的一種或多種特定關系的集合。
傳統(tǒng)上,我們把數(shù)據結構分為邏輯結構和物理結構。
邏輯結構:是指數(shù)據對象中數(shù)據元素之間的相互關系,也是我們今后最需要關注和討論的問題。
物理結構:是指數(shù)據的邏輯結構在計算機中的存儲形式。
常用的數(shù)據結構有:
數(shù)組,隊列(queue),堆(heap),棧(stack),鏈表(linked list ),樹(tree),圖(graph)和散列表(hash)
棧(stack):運算只在表的一端進行;隊列(Queue):運算只在表的兩端進行。
隊列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。
與棧相反,隊列是一種先進先出(First In First Out, FIFO)的線性表。
與棧相同的是,隊列也是一種重要的線性結構,實現(xiàn)一個隊列同樣需要順序表或鏈表作為基礎。
四大結構集合結構
線性結構
樹形結構
圖形結構
數(shù)據元素的存儲結構形式有兩種:順序存儲和鏈式存儲。
例如我們編程語言的數(shù)組結構就是這樣滴。
鏈式存儲結構:是把數(shù)據元素存放在任意的存儲單元里,這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的。
鏈式存儲結構
線性表:就好像是排隊一樣,具有線一樣性質的結構,它是由零個或多個數(shù)據元素組成的有限序列。
若元素存在多個,則第一個元素無前驅,而最后一個元素無后繼,其他元素都有且只有一個前驅和后繼。
若將線性表記為(a1,…,ai-1,ai,ai+1,…an),則表中ai-1領先于ai,ai領先于ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接后繼元素。
數(shù)據類型數(shù)據類型:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
例如很多編程語言的整型,浮點型,字符型這些指的就是數(shù)據類型。
在計算機中,內存不是無限大的,如果要計算或處理一些較大的數(shù)時,需要開辟較大的內存空間,于是就要對計算機進行數(shù)據類型分類,分出多種數(shù)據類型來適合各種不同的計算條件差異。
在C語言中,數(shù)據類型可以分為:
原子類型:不可以再分解的基本類型,例如整型、浮點型、字符型等。
結構類型:由若干個類型組合而成,是可以再分解的,例如整型數(shù)組是由若干整型數(shù)據組成的。
算法算法是解決特定問題求解步驟的描述,在計算機中表現(xiàn)為指令的有限序列,并且每條指令表示一個或多個操作。
算法具有五個基本特征:輸入、輸出、有窮性、確定性和可行性。
輸出:算法至少有一個或多個輸出。
有窮性:指算法在執(zhí)行有限的步驟之后,自動結束而不會出現(xiàn)無限循環(huán),并且每一個步驟在可接受的時間內完成。
確定性:算法的每一個步驟都具有確定的含義,不會出現(xiàn)二義性。
可行性:算法的每一步都必須是可行的,也就是說,每一步都能夠通過執(zhí)行有限次數(shù)完成。
正確性:算法的正確性是指算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。
高級語言編寫的程序在計算機上運行時所消耗的時間取決于下列因素:
1. 算法采用的策略,方案 2. 編譯產生的代碼質量 3. 問題的輸入規(guī)模 4. 機器執(zhí)行指令的速度
我們可以想象,線性表有兩種物理存儲結構:順序存儲結構和鏈式存儲結構。
線性表的順序存儲結構,指的是用一段地址連續(xù)的存儲單元依次存儲線性表的數(shù)據元素。
線性表(a1,a2,…,an)的順序存儲如下:
線性表順序存儲的結構#define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length; // 線性表當前長度 } SqList;
總結下,順序存儲結構封裝需要三個屬性:
存儲空間的起始位置,數(shù)組data,它的存儲位置就是線性表存儲空間的存儲位置。
線性表的最大存儲容量:數(shù)組的長度MaxSize。
線性表的當前長度:length。
插入算法的思路如果插入位置不合理,拋出異常; 如果線性表長度大于等于數(shù)組長度,則拋出異常或動態(tài)增加數(shù)組容量; 從最后一個元素開始向前遍歷到第i個位置,分別將它們都向后移動一個位置; 將要插入元素填入位置i處; 線性表長+1。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85286.html
摘要:通過通信線路連入通信子網終端是用戶訪問網絡的界面網絡操作系統(tǒng)是相對于主機操作系統(tǒng)而言的。接收方使用同一擴頻碼進行擴解。 目錄 一、計算機網絡 1.計算機網絡技術概述 2.計算機網絡分類 3.無線網絡分類 二、無線通信和網絡仿真技術基礎 1.基本概念 2.調制 (1)、概述 (2)、常用方式 ...
摘要:設計模式的類別設計模式一共分為種類型,共種。屬于結構型的設計模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。問題描述了應該在何時使用設計模式。解決方案描述了設計的組成成分,它們之間的相互關系及各自的職責和協(xié)作方式。 設計模式概述 1. 設計模式是什么 我們在平時編寫代碼的過程中,會遇到各種各樣的問題,細想一下很多問題的解決思路大致一樣的,這時候你就可以把解決問題的思路整...
摘要:整個包,按照功能可以大致劃分如下鎖框架原子類框架同步器框架集合框架執(zhí)行器框架本系列將按上述順序分析,分析所基于的源碼為。后,根據一系列常見的多線程設計模式,設計了并發(fā)包,其中包下提供了一系列基礎的鎖工具,用以對等進行補充增強。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首發(fā)于一世流云專欄:https...
閱讀 3976·2021-11-18 13:22
閱讀 1813·2021-11-17 09:33
閱讀 2877·2021-09-26 09:46
閱讀 1208·2021-08-21 14:11
閱讀 2884·2019-08-30 15:53
閱讀 2707·2019-08-30 15:52
閱讀 1885·2019-08-30 10:52
閱讀 1517·2019-08-29 15:30