逆行6-4リスト(20点)(二重ポインタ)

この問題は、機能を達成するために必要な順序リストが逆に設定されます、すなわちエンドヘッダがテーブルに設定され、テーブルは、ヘッダーの端に設定されています。次のように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;
    while(pp)
    {
        t=pp->next;
        pp->next=p;
        p=pp;
        pp=t;
    }
    return p;
}
公開された33元の記事 ウォンの賞賛4 ビュー3048

おすすめ

転載: blog.csdn.net/qq_45728926/article/details/105191283