转置单链表

struct Node
{
    int nValue;
    Node* pNext;
    Node(int n = 0) : nValue(n), pNext(nullptr) {};
    friend ostream& operator<<(ostream& os, Node* pNode);
};

ostream& operator<<(ostream& os, Node* pNode)
{
    Node* pTravel = pNode;
    while (pTravel != nullptr)
    {
        os << pTravel->nValue<<" ";
        pTravel = pTravel->pNext;
    }
    return os;
}

Node* GetInitList()
{
    Node* pTemp = nullptr;
    int nCount = 5;
    while (nCount > 0)
    {
        Node* pAdd = new Node;
        pAdd->nValue = nCount;
        pAdd->pNext = pTemp;
        pTemp = pAdd;
        nCount--;
    }
    return pTemp;
}

Node* TransList(Node* pHead)
{
    Node* pForward = nullptr;
    Node* pBack = pHead;
    Node* pTemp = nullptr;

    while (pBack != nullptr)
    {
        pTemp = pBack->pNext;
        pBack->pNext = pForward;
        pForward = pBack;
        pBack = pTemp;
    }

    return pForward;
}

int main()
{
    auto pHead = GetInitList();
    cout << pHead << endl;

    pHead = TransList(pHead);
    cout << pHead << endl;

    system("pause");
    return 0;
}

面试的时候,多次遇到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值