()邏輯結構相同但存儲不同可以是不同的數據結構例如線性表的邏輯結構屬於線性結構采用順序存儲結構為順序表而采用鏈式存儲結構稱為線性鏈表
()棧和隊列的邏輯結構相同其存儲表示也可相同(順序存儲和鏈式存儲)但由於其運算集合不同而成為不同的數據結構
()數據結構的評價非常復雜可以考慮兩個方面一是所選數據結構是否准確完整的刻劃了問題的基本特征;二是是否容易實現(如對數據分解是否恰當;邏輯結構的選擇是否適合於運算的功能是否有利於運算的實現;基本運算的選擇是否恰當)
評價好的算法有四個方面一是算法的正確性;二是算法的易讀性;三是算法的健壯性;四是算法的時空效率(運行)
()見上面題 ()見上面題 ()見上面題
()算法的時間復雜性是算法輸入規模的函數算法的輸入規模或問題的規模是作為該算法輸入的數據所含數據元素的數目或與此數目有關的其它參數有時考慮算法在最壞情況下的時間復雜度或平均時間復雜度
()算法是對特定問題求解步驟的描述是指令的有限序列其中每一條指令表示一個或多個操作算法具有五個重要特性有窮性確定性可行性輸入和輸出
()頻度在分析算法時間復雜度時有時需要估算基本操作的原操作它是執行次數最多的一個操作該操作重復執行的次數稱為頻度
集合線性結構樹形結構圖形或網狀結構 邏輯結構存儲結構操作(運算)
通常考慮算法所需要的存儲空間量和算法所需要的時間量後者又涉及到四方面程序運行時所需輸入的數據總量對源程序進行編譯所需時間計算機執行每條指令所需時間和程序中指令重復執行的次數
D是數據元素的有限集合S是D上數據元素之間關系的有限集合
數據結構這一術語有兩種含義一是作為一門課程的名稱;二是作為一個科學的概念作為科學概念目前尚無公認定義一般認為討論數據結構要包括三個方面一是數據的邏輯結構二是數據的存儲結構三是對數據進行的操作(運算)而數據類型是值的集合和操作的集合可以看作是已實現了的數據結構後者是前者的一種簡化情況
見上面題
將學號姓名平均成績看成一個記錄(元素含三個數據項)將個這樣的記錄存於數組中因一般無增刪操作故宜采用順序存儲
typedef struct
{int num;//學號
char name[];//姓名
float score;/平均成績
}node;
node student[];
見上面題()
應從兩方面進行討論如通訊錄較少變動(如城市私人電話號碼)主要用於查詢以順序存儲較方便既能順序查找也可隨機查找;若通訊錄經常有增刪操作用鏈式存儲結構較為合適將每個人的情況作為一個元素(即一個結點存放一個人)設姓名作關鍵字鏈表安排成有序表這樣可提高查詢速度
線性表中的插入刪除操作在順序存儲方式下平均移動近一半的元素時間復雜度為O(n);而在鏈式存儲方式下插入和刪除時間復雜度都是O()
對算法A和A的時間復雜度T和T取對數得nlog和logn顯然算法A好於A
struct node
{int yearmonthday; };
typedef struct
{int num;//帳號
char name[];//姓名
struct node date;//開戶年月日
int tag;//儲蓄類型如 零存 一年定期……
float put;//存入累加數;
float interest;//利息
float total;//帳面總數
}count;
()n ()n+ ()n ()(n+)(n)/ ()(n+)(n)/ ()n
[] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/22750.html