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

溫馨提示×

c語言linklist的用法是什么

小億
165
2024-01-03 20:29:34
欄目: 編程語言

在C語言中,鏈表(LinkList)是一種常用的數據結構,用于存儲和組織數據。鏈表由一系列節點組成,每個節點包含一個數據元素和一個指向下一個節點的指針。鏈表的最后一個節點指向NULL,表示鏈表的結束。

鏈表的用法包括以下幾個方面:

  1. 聲明鏈表節點結構體:通過定義一個結構體來表示鏈表節點,結構體中包含數據元素和指向下一個節點的指針。
struct Node {
    int data;
    struct Node* next;
};
  1. 創建鏈表:使用malloc函數動態分配內存來創建鏈表節點,并使用指針將節點連接起來。
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

struct Node* addNode(struct Node* head, int data) {
    struct Node* newNode = createNode(data);
    if (head == NULL) {
        head = newNode;
    } else {
        struct Node* current = head;
        while (current->next != NULL) {
            current = current->next;
        }
        current->next = newNode;
    }
    return head;
}
  1. 遍歷鏈表:使用循環結構遍歷鏈表中的所有節點,可以使用指針依次訪問每個節點的數據元素。
void printList(struct Node* head) {
    struct Node* current = head;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
}
  1. 插入和刪除節點:可以在鏈表中插入和刪除節點,并更新節點之間的指針關系。
struct Node* insertNode(struct Node* head, int data, int position) {
    struct Node* newNode = createNode(data);
    if (position == 1) {
        newNode->next = head;
        head = newNode;
    } else {
        struct Node* current = head;
        for (int i = 1; i < position - 1 && current != NULL; i++) {
            current = current->next;
        }
        if (current != NULL) {
            newNode->next = current->next;
            current->next = newNode;
        }
    }
    return head;
}

struct Node* deleteNode(struct Node* head, int position) {
    if (position == 1) {
        struct Node* temp = head;
        head = head->next;
        free(temp);
    } else {
        struct Node* current = head;
        struct Node* previous = NULL;
        for (int i = 1; i < position && current != NULL; i++) {
            previous = current;
            current = current->next;
        }
        if (current != NULL) {
            previous->next = current->next;
            free(current);
        }
    }
    return head;
}

鏈表的使用可以靈活地插入、刪除和修改節點,相比數組具有更好的動態性能。但是鏈表的缺點是訪問節點需要通過指針遍歷,相對較慢,并且需要額外的內存來存儲指針。

0
阿拉善左旗| 温州市| 闵行区| 嘉善县| 宁安市| 溧水县| 祁连县| 中山市| 深圳市| 唐海县| 贡嘎县| 界首市| 天峨县| 法库县| 胶州市| 裕民县| 章丘市| 九龙坡区| 新余市| 罗甸县| 鄂尔多斯市| 安多县| 凤城市| 邳州市| 乐安县| 辽阳县| 乌兰浩特市| 高州市| 吴川市| 双城市| 当阳市| 舞钢市| 阳泉市| 峨眉山市| 清新县| 上林县| 和林格尔县| 万全县| 托克逊县| 沁阳市| 平安县|