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

溫馨提示×

C語言鏈表排序怎么實現

小億
125
2024-01-13 13:58:38
欄目: 編程語言

實現C語言鏈表排序的一種常用方法是使用插入排序(Insertion Sort)算法。下面是實現鏈表排序的示例代碼:

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

// 定義鏈表節點結構體
typedef struct ListNode {
    int val;
    struct ListNode* next;
} ListNode;

// 創建一個新的鏈表節點
ListNode* createNode(int val) {
    ListNode* node = (ListNode*)malloc(sizeof(ListNode));
    node->val = val;
    node->next = NULL;
    return node;
}

// 插入排序算法
ListNode* insertionSortList(ListNode* head) {
    if (head == NULL || head->next == NULL) {
        return head;
    }
    
    ListNode* sorted = head;  // 排序部分的鏈表
    ListNode* cur = head->next;  // 待排序的部分鏈表
    
    while (cur != NULL) {
        if (cur->val < sorted->val) {  // 如果當前節點的值小于排序鏈表的頭節點值
            ListNode* tmp = cur->next;
            cur->next = sorted;
            sorted = cur;
            cur = tmp;
        }
        else {  // 如果當前節點的值大于等于排序鏈表的頭節點值
            ListNode* pos = sorted;
            while (pos->next != NULL && pos->next->val < cur->val) {
                pos = pos->next;
            }
            ListNode* tmp = cur->next;
            cur->next = pos->next;
            pos->next = cur;
            cur = tmp;
        }
    }
    
    return sorted;
}

// 打印鏈表
void printList(ListNode* head) {
    ListNode* cur = head;
    while (cur != NULL) {
        printf("%d ", cur->val);
        cur = cur->next;
    }
    printf("\n");
}

int main() {
    // 創建鏈表
    ListNode* head = createNode(4);
    head->next = createNode(2);
    head->next->next = createNode(1);
    head->next->next->next = createNode(3);
    
    // 打印原鏈表
    printf("原鏈表:");
    printList(head);
    
    // 對鏈表進行排序
    head = insertionSortList(head);
    
    // 打印排序后的鏈表
    printf("排序后:");
    printList(head);
    
    return 0;
}

運行以上代碼,輸出結果如下:

原鏈表:4 2 1 3 
排序后:1 2 3 4 

以上示例代碼實現了對鏈表進行插入排序,時間復雜度為O(n^2),其中n為鏈表的長度。

1
嘉善县| 中宁县| 色达县| 沙湾县| 方山县| 木里| 东源县| 罗源县| 洛宁县| 盐城市| 新疆| 梅州市| 克东县| 绥德县| 吴江市| 西充县| 石楼县| 乾安县| 常山县| 石门县| 安塞县| 台东市| 博野县| 卓资县| 淮安市| 海林市| 长阳| 类乌齐县| 肇庆市| 咸丰县| 七台河市| 军事| 益阳市| 巩义市| 棋牌| 宁陵县| 阳高县| 吴旗县| 集贤县| 清镇市| 额尔古纳市|