끝 에서 끝까지 링크 출력

제목: 체인 헤더 노드 를 입력 하고 끝 에서 끝까지 모든 노드 의 값 을 출력 합 니 다.
링크 노드 정 의 는 다음 과 같 습 니 다.
struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

답: 1. 먼저 링크 를 역 설정 한 다음 에 출력 할 수 있 습 니 다. 구체 적 으로 참고 하 세 요.
      http://www.cnblogs.com/venow/archive/2012/08/26/2657559.html
     여기 서 우 리 는 더욱 간단 한 방법 을 사용한다.
#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

//    
void CreateList(ListNode *&pHead)
{
    fstream fin("list.txt");
    ListNode *pNode = NULL;
    ListNode *pTmp = NULL;
    int data;
    fin>>data;
    while (data)
    {
        pNode = new ListNode;
        pNode->m_nKey = data;
        pNode->m_pNext = NULL;
        if (NULL == pHead)
        {
            pHead = pNode;
            pTmp = pNode;
        }
        else
        {
            pTmp->m_pNext = pNode;
            pTmp = pNode;
        }

        fin>>data;
    }
}

//        
void PrintList(ListNode *pHead)
{
    if (NULL == pHead)
    {
        return;
    }
    ListNode *pNode = pHead;
    while (NULL != pNode)
    {
        cout<<pNode->m_nKey<<"  ";
        pNode = pNode->m_pNext;
    }
    cout<<endl;
}

//        
void PrintTailToHeadList(ListNode *pHead)
{
    if (NULL != pHead)
    {
        PrintTailToHeadList(pHead->m_pNext);
        cout<<pHead->m_nKey<<"  ";
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    ListNode *pHead = NULL;
    CreateList(pHead);
    cout<<"";
    PrintList(pHead);
    cout<<"";
    PrintTailToHeadList(pHead);
    cout<<endl;
    return 0;
}

좋은 웹페이지 즐겨찾기