亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
九江县| 长寿区| 买车| 昆山市| 阳城县| 东乡族自治县| 元阳县| 仙桃市| 高淳县| 得荣县| 怀远县| 营山县| 同江市| 梅州市| 东乡| 大兴区| 桂阳县| 习水县| 克什克腾旗| 沾化县| 车险| 扎赉特旗| 成武县| 昆山市| 新民市| 兴山县| 铜山县| 阿瓦提县| 综艺| 清水县| 海南省| 上犹县| 方山县| 图木舒克市| 迭部县| 溧水县| 会泽县| 财经| 鹿邑县| 保德县| 崇左市|