この問題は、機能を達成するために必要な順序リストが逆に設定されます、すなわちエンドヘッダがテーブルに設定され、テーブルは、ヘッダーの端に設定されています。次のようにLLIノードが定義されます。
構造体ListNode {
intデータ。
次のstruct ListNode *;
}。
定義インタフェース機能:
構造体ListNode *リバース(*構造体ListNodeヘッド);
前記ヘッドは、ユーザの頭部のポインタのリストを渡され、リストのセットに対するヘッドの逆の機能、およびヘッドポインタリストの結果を返します。
審判試験サンプルプログラム:
書式#include <stdio.hに>
する#include <stdlib.h>に含ま
構造体ListNode {
intデータ。
次のstruct ListNode *;
}。
構造体ListNode * createlist(); / 裁判实现、细节不表 /
構造体ListNode *リバース(構造体ListNode *ヘッド)
ボイドがprintlist(構造体ListNode *ヘッド)
{
構造体ListNode * P =ヘッド。
§{一方
;のprintf( "%がD『 P->データ)
; P = P->次
}
のprintf(』\ n");
}
INTメイン()
{
構造体ListNode *ヘッド。
head = createlist();
head = reverse(head);
printlist(head);
return 0;
}
/ *あなたのコードはここに埋め込まれます* /
サンプル入力:
123456-1
出力サンプル:
654321
struct ListNode *reverse( struct ListNode *head )
{
if(head==NULL||head->next==NULL)
return head;
struct ListNode *p=NULL,*t,*pp=head;//定义双指针,p和pp
while(pp)
{
t=pp->next;//要存一下后边的数,不然就不能向下继续走了
pp->next=p;
p=pp;//p要向下移动一个
pp=t;//pp也要向下移动一个,这时候t就发挥作用了
}
return p;//因为这时候pp指的是null,p指的最后一个节点
}