前言:常用的資料結構主要包括陣列、鍊錶、串、棧、佇列、樹、圖
目錄
一、陣列
二、鍊錶
三、棧四、佇列
五、樹六、圖 總結
**實現:
int data[100];
int *arr = (int *)malloc(sizeof(int) * 100);
**實現:參考:
**實現
**實現:
#include #include #include #define alloc_size 512
typedef int key_type;
typedef struct _queue_node
queue_node;
typedef struct _queue
queue;
int init_queue(queue *q)
q->front = q->rear = null;
q->queue_size = 0;
return 0;
}int destory_queue(queue *q)
iter = q->front;
while (null != iter)
return 0;
}int push_queue(queue *q, key_type key)
queue_node *node = (queue_node*)calloc(1, sizeof(queue_node));
if (null == node)
memset(node, 0, sizeof(queue_node));
node->key = key;
node->next = null;
if (null != q->rear)
else
q->queue_size ++;
return 0;
}int pop_queue(queue *q, key_type *key)
if (null == q->front)
if (q->front == q->rear)
else
q->queue_size --;
return 0;
}int is_empty_queue(queue *q)
return q->rear == null ? 1 : 0;
return 0;
}int size_queue(queue *q)
return q->queue_size;
}int main()
while (0 == is_empty_queue(&q))
destory_queue(&q);
}
樹是一種資料結構,它是由n(n>=1)個有限節點組成乙個具有層次關係的集合。把它叫做 「樹」 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點:
每個節點有零個或多個子節點;
沒有父節點的節點稱為根節點;
每乙個非根節點有且只有乙個父節點;
除了根節點外,每個子節點可以分為多個不相交的子樹;
在日常的應用中,我們討論和用的更多的是樹的其中一種結構,就是二叉樹。
如圖所示:
**實現:
圖是由結點的有窮集合v和邊的集合e組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。
按照頂點指向的方向可分為無向圖和有向圖:
圖是一種比較複雜的資料結構,在儲存資料上有著比較複雜和高效的演算法,分別有鄰接矩陣 、鄰接表、十字鍊錶、鄰接多重表、邊集陣列等儲存結構,這裡不做展開,讀者有興趣可以自己學習深入。
**實現:
以上簡單介紹了常用的資料結構,其中包括陣列、鍊錶、棧、佇列、樹、圖等等,可以參考《大話資料結構》這本書學習,比較容易理解。
常用資料結構
文章參考 資料結構 c語言版 嚴蔚敏 線性表 有頭有尾,中間節點有前驅有後繼 定義 一組連續的儲存單元依次儲存線性表的資料元素。定長順序表 typedef struct sqlist psqlist 不定長順序表 typedef struct dsqlist dsqlist,pdsqlist 單鏈表...
常用資料結構
function delete array element arr,pos for i pos 1 i length 1 i array pop arr return arr pos 3 echo 除第位置上的元素後 echo implode delete array element arr,pos...
常用資料結構
基本資料結構 邏輯 集合,線性結構,樹形結構,圖形結構 基本資料結構 物理 順序,鏈式,索引,雜湊。陣列,棧,鍊錶,圖,雜湊表,對列,樹,堆 陣列 在記憶體中連續儲存多個元素的結構,在記憶體中的分配是連續,通過陣列下標運算元組元素 建立陣列 int a int a new int 3 int a n...