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

溫馨提示×

c語言雙向鏈表實現的方法是什么

小億
85
2023-12-27 15:24:26
欄目: 編程語言

要實現一個雙向鏈表的數據結構,你可以按照以下步驟進行:

  1. 定義一個節點結構體。每個節點應該包含兩個指針,一個指向前一個節點,一個指向后一個節點。同時,節點還應該包含存儲數據的變量。
typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;
  1. 定義鏈表結構體。鏈表結構體應該包含頭節點和尾節點的指針。
typedef struct LinkedList {
    Node* head;
    Node* tail;
} LinkedList;
  1. 實現初始化函數。初始化函數用于創建一個空鏈表。
void initLinkedList(LinkedList* list) {
    list->head = NULL;
    list->tail = NULL;
}
  1. 實現插入節點的函數。插入函數需要考慮頭節點和尾節點的情況。
void insertNode(LinkedList* list, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->prev = NULL;
    newNode->next = NULL;

    if (list->head == NULL) {
        list->head = newNode;
        list->tail = newNode;
    } else {
        newNode->prev = list->tail;
        list->tail->next = newNode;
        list->tail = newNode;
    }
}
  1. 實現刪除節點的函數。刪除函數需要考慮節點在鏈表中的位置。
void deleteNode(LinkedList* list, int data) {
    Node* current = list->head;

    while (current != NULL) {
        if (current->data == data) {
            if (current->prev != NULL) {
                current->prev->next = current->next;
            } else {
                list->head = current->next;
            }

            if (current->next != NULL) {
                current->next->prev = current->prev;
            } else {
                list->tail = current->prev;
            }

            free(current);
            return;
        }

        current = current->next;
    }
}
  1. 實現打印鏈表的函數。
void printLinkedList(LinkedList* list) {
    Node* current = list->head;

    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }

    printf("\n");
}

完成了上述步驟后,你就可以使用這些函數來創建和操作雙向鏈表了。

0
斗六市| 鲁甸县| 孟州市| 宁陕县| 华阴市| 长葛市| 明溪县| 彰化县| 兴安县| 元朗区| 沭阳县| 清新县| 达日县| 阿城市| 阳江市| 巧家县| 孟连| 博野县| 施甸县| 澜沧| 宿松县| 德化县| 连江县| 东平县| 娄底市| 姜堰市| 中牟县| 孝义市| 乌鲁木齐市| 专栏| 合阳县| 那坡县| 绍兴市| 鄂伦春自治旗| 龙海市| 阿克苏市| 伊通| 临颍县| 板桥市| 汤阴县| 黔西县|