PTA——6-1 單鏈表逆轉 (20分)


題目地址

本題要求實現一個函數,將給定的單鏈表逆轉。

函數接口定義:

List Reverse( List L ); 
 

其中List結構定義如下:

typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存儲結點數據 */ PtrToNode Next; /* 指向下一個結點的指針 */ }; typedef PtrToNode List; /* 定義單鏈表類型 */ 
 

L是給定單鏈表,函數Reverse要返回被逆轉后的鏈表。

裁判測試程序樣例:

#include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct Node *PtrToNode; struct Node { ElementType Data; PtrToNode Next; }; typedef PtrToNode List; List Read(); /* 細節在此不表 */ void Print( List L ); /* 細節在此不表 */

 

 

題目由兩種思路,一是從前往后遍歷,同時采用 頭插入法創建一個新的鏈表;方法二,從前往后遍歷,同時修改 List->Next 的指向

第一種后續補充

 

【第二種思路】

List Reverse(List L){
    List p1 = NULL,p2 = NULL;
    while(L){
        p2 = L->Next;
        L->Next = p1; p1 = L;
        L = p2;
    }
    return p1;
}

第一次就是將 p1 【 NULL】 賦值給 原鏈表的頭結點的Next,然后讓 p1 指向當前 L 結點。

下一次就是令 當前結點 L' 的 Next 指向上一個結點 L,從而修改原鏈表 List->Next 的指向 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM