![](http://image.uc.cn/s/wemedia/s/upload/2024/58fc68f748f1357a57aa464268beba8d.jpg)
1. 數組
數組是C語言中一種基本的數據結構,它用于存儲具有相同數據類型的元素集合。數組的大小在定義時確定,且在程序運行過程中不可改變。
int arr[10]; // 定義一個包含10個整數的數組初始化數組:int arr[5] = {1, 2, 3, 4, 5};訪問數組元素:arr[index];修改數組元素:arr[index] = value;2. 結構體
結構體是一種用戶自定義的數據類型,它允許將不同類型的數據組合在一起。結構體在C語言中用于表示現實世界中的對象和實體。
struct Person { char name[50]; int age;};定義結構體變量:struct Person person1;訪問結構體成員:person1.age;修改結構體成員:person1.age = 25;3. 鏈表
鏈表是一種動態數據結構,它由一系列節點組成,每個節點包含數據和指向下一個節點的指針。鏈表可以靈活地插入和刪除元素,且不受固定大小的限制。
struct Node { int data; struct Node *next;};創建鏈表節點:struct Node *node = (struct Node *)malloc(sizeof(struct Node));插入節點:node->next = current->next; current->next = node;刪除節點:current->next = current->next->next;4. 棧
棧是一種後進先出(LIFO)的數據結構,它允許在一端進行插入和刪除操作。棧常用于解決括號匹配、逆序輸出等問題。
int stack[100];int top = -1;入棧:stack[++top] = value;出棧:int value = stack[top--];判斷棧空:top == -15. 隊列
隊列是一種先進先出(FIFO)的數據結構,它允許在一端進行插入操作,在另一端進行刪除操作。隊列常用于任務調度、緩沖區管理等場景。
int queue[100];int front = 0;int rear = -1;入隊:queue[++rear] = value;出隊:int value = queue[front++];判斷隊空:front > rear6. 樹
樹是一種分層數據結構,它由節點組成,每個節點包含數據和指向子節點的指針。樹常用于表示具有層次關系的數據,如文件系統、組織結構等。
struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right;};創建樹節點:struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode));插入節點:node->left = current->left; current->left = node;遍曆樹: inorder(node->left); printf("%d ", node->data); inorder(node->right);7. 圖
圖是一種複雜的數據結構,它由節點和邊組成,用于表示對象之間的多對多關系。圖可以有多種形式,如無向圖、有向圖、加權圖等。
struct Graph { int numVertices; struct AdjList *adjLists;};創建圖:struct Graph *graph = (struct Graph *)malloc(sizeof(struct Graph));添加邊:addEdge(graph, src, dest);遍曆圖:DFS(graph, vertex);總結
數據結構是C語言編程中非常重要的一部分,掌握數據結構的高級技巧對于成爲一名優秀的C語言程序員至關重要。通過本篇文章,我們了解到了數組、結構體、鏈表、棧、隊列、樹和圖等數據結構。