91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C語言鏈表怎么建立和使用

小億
83
2024-01-11 10:43:10
欄目: 編程語言

建立鏈表的步驟如下:

  1. 定義一個結構體來表示鏈表的節點,結構體中包含一個數據域和一個指向下一個節點的指針。
  2. 定義一個指向鏈表頭節點的指針。
  3. 動態分配內存創建鏈表節點,并將數據存儲到節點的數據域中。
  4. 將新創建的節點插入到鏈表中。

使用鏈表的一般步驟如下:

  1. 遍歷鏈表:
    • 從鏈表頭節點開始,通過指針的指向逐個訪問鏈表中的節點。
    • 輸出或處理節點的數據域的值。
    • 將指針指向下一個節點,繼續循環直到鏈表末尾(即指針為空)。
  2. 插入節點:
    • 創建一個新的節點并為其分配內存。
    • 將數據存儲到新節點的數據域中。
    • 調整鏈表中節點的指針,將新節點插入到合適的位置。
  3. 刪除節點:
    • 找到要刪除的節點的前一個節點。
    • 調整節點的指針,跳過要刪除的節點。
    • 釋放被刪除節點的內存。

下面是一個使用鏈表實現的簡單示例代碼:

#include <stdio.h>
#include <stdlib.h>

// 定義鏈表節點結構體
typedef struct Node {
    int data;           // 數據域
    struct Node *next;  // 指向下一個節點的指針
} Node;

// 創建鏈表節點
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    if (newNode == NULL) {
        printf("內存分配失敗!\n");
        exit(1);
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 插入節點到鏈表末尾
void insertNode(Node** head, int data) {
    Node* newNode = createNode(data);    // 創建新節點
    if (*head == NULL) {
        *head = newNode;    // 若鏈表為空,則新節點為頭節點
    } else {
        Node* current = *head;
        while (current->next != NULL) {
            current = current->next;    // 遍歷鏈表直到最后一個節點
        }
        current->next = newNode;    // 將新節點插入到鏈表末尾
    }
}

// 刪除指定值的節點
void deleteNode(Node** head, int data) {
    Node* current = *head;
    Node* previous = NULL;
    while (current != NULL) {
        if (current->data == data) {
            if (previous == NULL) {
                *head = current->next;    // 如果要刪除的節點是頭節點
            } else {
                previous->next = current->next;    // 跳過當前節點
            }
            free(current);    // 釋放被刪除節點的內存
            return;
        }
        previous = current;
        current = current->next;
    }
    printf("要刪除的節點不存在!\n");
}

// 遍歷鏈表并輸出節點的值
void traverseList(Node* head) {
    Node* current = head;
    printf("鏈表節點的值:");
    while (current != NULL) {
        printf(" %d", current->data);
        current = current->next;
    }
    printf("\n");
}

int main() {
    Node* head = NULL;    // 頭節點指針初始化為空
    insertNode(&head, 1);
    insertNode(&head, 2);
    insertNode(&head, 3);
    insertNode(&head, 4);
    insertNode(&head, 5);
    traverseList(head);    // 輸出鏈表節點的值

    deleteNode(&head, 3);
    traverseList(head);

    return 0;
}

以上是一個基本的鏈表操作示例,其中包括創建節點、插入節點、刪除節點和遍歷鏈表等操作。可以根據實際需求進行擴展和修改。

0
农安县| 乌兰浩特市| 仪陇县| 通许县| 和平区| 玛曲县| 白山市| 买车| 玉门市| 铜川市| 来凤县| 东宁县| 礼泉县| 滕州市| 右玉县| 海丰县| 崇信县| 茶陵县| 图木舒克市| 桐柏县| 盐津县| 合阳县| 嵊州市| 湘潭市| 雷州市| 彰化市| 剑川县| 海原县| 平安县| 城固县| 扶绥县| 怀化市| 桑植县| 抚州市| 京山县| 瑞安市| 靖江市| 台中市| 唐河县| 寿阳县| 凤凰县|