逆行性の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;//定义双指针,p和pp
    while(pp)
    {
        t=pp->next;//要存一下后边的数,不然就不能向下继续走了
        pp->next=p;
        p=pp;//p要向下移动一个
        pp=t;//pp也要向下移动一个,这时候t就发挥作用了
    }
    return p;//因为这时候pp指的是null,p指的最后一个节点
}
公開された33元の記事 ウォンの賞賛4 ビュー3050

おすすめ

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