この質問では
、特定の単一リンクリストの定義を逆にする関数を実装する必要があります。
typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
審判のテスト手順の例:
#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 Reverse( List L );
int main()
{
List L1, L2;
L1 = Read();
L2 = Reverse(L1);
Print(L1);
Print(L2);
return 0;
}
/* 你的代码将被嵌在这里 */
List Reverse( List L){
PtrToNode temp = NULL;
PtrToNode L1 = NULL;
while(L!=NULL){
temp = L->Next;
L->Next = L1;
L1 = L;
L = temp;
}
return L1;
}
コードを送信するときは、Reverse(List L)関数を送信するだけで済みます。
コードの説明:
リンクリストは、デフォルトで先行ノードのないリンクリストである必要があります。
最初に2つのポインタ変数tempとLを宣言します。Lは反転後の新しいリンクリストの最初のアドレスです。
リンクリストのノードが12 3 4 5
、、、、、最初のパスであると仮定します。temp–> 2
L-> next -----> null
L1 = L -----> 1
L = temp- ---> 2 2
番目のパス:temp—> 3
L-> next ------> 1
L1 = L -------> 2
L = temp ------> 3 3
番目のパス: temp -------> 4
L-> next --------> 2
L1 = L --------> 3
L = temp --------> 4
。。。。。。。。。