計算機程式設計 = 資料結構 + 演算法
資料結構研究變數的管理方式,演算法研究解決特定問題的方法。
資料結構分三個層次:邏輯結構(抽象層)、物理結構(結構層)、運算結構(實現層)。
邏輯結構指人對資料之間關係的理解和看法,邏輯結構和計算機無關。
邏輯結構:
1、集合結構:這種結構表示資料可以合併成乙個整體。
這是資料之間關係最弱的一種,就僅比那個一點關係都沒有的強一點。
2、線性結構:這種結構中資料之間有一對一的關係(如排隊)。
3、樹型結構:這種結構中資料之間有一對多的關係,這個關係稱為父子關係(典型的如細胞**)。
4、網狀結構:這種結構中資料之間有多對多的交叉對映關係。
(我們主要研究線性結構和樹型結構。)
物理結構描述計算機內部資料之間實際的關係。
物理結構:
1、順序結構:結構中的資料元素存放在一段連續的記憶體空間中,典型代表就是陣列。隨機訪問方便,插入刪除複雜。
2、鏈式結構:這種結構中不同的資料被儲存在計算機裡不同的地方,他們的物理位置之間完全沒有關係。鏈式結構由多個節點構成,每個節點中包括有效資料和至少乙個指標變數。
對鏈式結構進行操作時,如果不會修改結構則使用一級指標變數就可以了,如果會修改結構則需要使用二級指標變數,其實,一級指標變數也可以修改鏈式結構。
鏈式結構適合進行插入刪除操作,不適合進行隨機訪問。
/*鏈式結構練習*/
#include
typedef
struct nodenode;
node node1 = ;
int main();
static node node3 = ;
node node5 = ;//新添乙個節點,把它加入鍊錶中
p_head = &node1;
node1.p_next = &node2;
node2.p_next = &node3;
//用二級指標把新增節點5掛上去
/*node **pp_tmp = &p_head;
while (*pp_tmp)
*pp_tmp = &node5;*/
//第二種把新增節點5加進去的方法
node *p_tmp = null;
if (p_head)
p_tmp->p_next = &node5;
}else
//顯示所有節點資料
p_tmp = p_head;
while (p_tmp)
printf("\n");
return
0;}
邏輯結構可以採用多種物理結構實現,它們之間沒有明確的一對一的關係。
資料結構的基本操作(運算結構):
1、建立/銷毀
分配資源、建立結構、釋放資源
2、插入/刪除
增加、減少資料元素
3、獲取/修改
遍歷、迭代、隨機訪問
(增刪改查)
4、排序/查詢
演算法應用
計算機程式設計 = 資料結構 + 演算法
資料結構研究變數的管理方式,演算法研究解決特定問題的方法。
資料結構分三個層次:邏輯結構(抽象層)、物理結構(結構層)、運算結構(實現層)。
資料結構(1) 資料結構的三大結構
什麼是資料結構 1.資料結構的有關定義 1 資料結構 是帶有結構資料元素的集合 2 資料 是客觀事物的數值 字元以及能輸入機器且能被處理的各種符號的集合 編譯 鏈結 源程式 c 目標程式 obj 可執行程式 exe 3 資料物件 是性質相同的資料元素的集合 4 資料型別 一組性質相同的值的集合以及定...
資料結構 三大查詢
在之前的兩篇文章中,我們總結了八種經典的排序演算法,分別為直接插入排序,希爾排序,簡單選擇排序,堆排序,氣泡排序,歸併排序,快速排序,基數排序,並分別用python和c 來實現每個排序演算法。在這篇文章中,我們將繼續學習資料結構中的三種常用的查詢演算法 二分查詢,塊查詢,雜湊查詢。二分查詢作為最簡單...
資料結構(三)
輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。零多項式應輸出0 0。4 3 4 5 2...