首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言鏈表插入排序邏輯修正與遍歷打印錯誤分析

     編輯:程式設計疑難解答

打印函數錯誤

void Print(Node *head) {
    head = head->next; // 跳過首節點!
    while (head) { printf("%d ", head->data); head = head->next; }
}

應改為:

void Print(Node *head) {
    while (head) { printf("%d ", head->data); head = head->next; }
}

插入邏輯隱患

insert 中 pr = malloc(...) 分配新節點,但後續邏輯將 pr 掛入鏈表時未處理 head 更新返回值正確性,建議統一返回新頭指針並檢查 malloc 失敗。

修正插入

Node* insert(Node *head, int data) {
    Node *newNode = malloc(sizeof(Node));
    if (!newNode) return head;
    newNode->data = data; newNode->next = NULL;
    if (!head || data < head->data) {
        newNode->next = head;
        return newNode;
    }
    Node *cur = head;
    while (cur->next && cur->next->data < data) cur = cur->next;
    newNode->next = cur->next;
    cur->next = newNode;
    return head;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved