C. 雙重鍊表刪除操作

發布 科技 2024-03-06
3個回答
  1. 匿名使用者2024-01-26

    首先,你用錯了malloc,malloc(sizeof(node*))表示申請乙個4位元組的區域,你應該用malloc(sizeof(node)),這樣你就可以正確地申請乙個剛好用來儲存乙個節點的記憶體區域。 因為 sizeof(node*) 給出了 node* 指標使用的記憶體大小,在 32 位系統中為 4 個位元組。 sizeof(node) 返回節點結構占用的記憶體大小。

    所以你需要把malloc(sizeof(node*))改成malloc(sizeof(node))。

    其次,node* node = (node*)malloc(sizeof(node*))。

    if (null == node)

    printf("the node can't creat.");

    exit(exit_failure);

    node = creatnode();

    沒有必要這樣寫,它會浪費記憶體空間。

    應為:node* node = creatnode();

    if (null == node)

    printf("the node can't creat.");

    exit(exit_failure);

  2. 匿名使用者2024-01-25

    node* tmpnode = node->next->next;

    free(node->next);它是免費的。

    node->next = tmpnode;在這裡,您繼續使用它。

    node->next->pre = node;在這一點上,你也用過,它會出錯。

    使用鍊表時,需要確定它是否存在,並且不為空,然後再次使用,即進行安全檢查。

  3. 匿名使用者2024-01-24

    其工作原理如下:

    由於每個節點都包含指向後續節點的指標,因此在刪除該節點之前,必須保留指向後續節點的指標。 ptemp=p1->next->next;

    刪除節點。 free(p1->next);注意:節點釋放後,p1->next 指向的記憶體區域無效,因此 p1->next 成為無效的空指標。

    然後將上乙個節點視為當前節點。 將指向當前節點的後續節點的指標儲存。 p1->next=ptemp;鏈結後續節點。

相關回答
8個回答2024-03-06

#include

#include >>>More

9個回答2024-03-06

C 語言中的鍊表是一種資料結構。

它是一種線性儲存結構。 >>>More

23個回答2024-03-06

1.開啟計算機,右鍵單擊系統驅動器號,然後選擇“屬性”。 >>>More

16個回答2024-03-06

刪除記錄的簡單方法應該說是最簡單的入門級。 >>>More

23個回答2024-03-06

如果是手機,請嘗試格式化儲存卡(通常儲存卡是錯誤的)。