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

溫馨提示×

c語言單鏈表反轉的方法是什么

小億
92
2023-12-01 22:39:14
欄目: 編程語言

C語言中單鏈表的反轉可以通過修改指針的指向來實現。具體的方法如下:

  1. 定義三個指針:prev、curr和next。初始時,prev指向NULL,curr指向鏈表的頭節點,next指向curr的下一個節點。

  2. 遍歷鏈表,直到curr指向NULL為止,循環執行以下操作: a. 將next指向curr的下一個節點,以便保留鏈表的連接關系。 b. 將curr的next指針指向prev,即將curr的指針方向反轉。 c. 將prev指向curr,以便保留反轉后的鏈表的頭節點。 d. 將curr指向next,以便繼續遍歷鏈表。

  3. 遍歷結束后,prev指向反轉后的鏈表的頭節點,即完成了鏈表的反轉。

以下是一個示例代碼:

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

struct ListNode {
    int val;
    struct ListNode *next;
};

struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode *prev = NULL;
    struct ListNode *curr = head;
    
    while (curr != NULL) {
        struct ListNode *next = curr->next;
        curr->next = prev;
        prev = curr;
        curr = next;
    }
    
    return prev;
}

int main() {
    // 創建鏈表 1->2->3->4->5
    struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *node2 = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *node3 = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *node4 = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *node5 = (struct ListNode *)malloc(sizeof(struct ListNode));
    
    head->val = 1;
    head->next = node2;
    
    node2->val = 2;
    node2->next = node3;
    
    node3->val = 3;
    node3->next = node4;
    
    node4->val = 4;
    node4->next = node5;
    
    node5->val = 5;
    node5->next = NULL;
    
    // 反轉鏈表
    struct ListNode *newHead = reverseList(head);
    
    // 遍歷打印反轉后的鏈表
    struct ListNode *current = newHead;
    while (current != NULL) {
        printf("%d ", current->val);
        current = current->next;
    }
    
    return 0;
}

運行以上代碼,輸出結果為:5 4 3 2 1,即鏈表反轉成功。

0
天津市| 亚东县| 敦煌市| 大邑县| 阳山县| 安远县| 郯城县| 兴安县| 姚安县| 伊川县| 清流县| 同江市| 新源县| 通城县| 集安市| 凤翔县| 泰宁县| 错那县| 灌南县| 迭部县| 永丰县| 浪卡子县| 朔州市| 杂多县| 黎川县| 三亚市| 利津县| 汉寿县| 河源市| 保康县| 阆中市| 淳化县| 汉源县| 海安县| 临朐县| 华容县| 鄄城县| 朝阳县| 嘉义县| 濮阳县| 安图县|