如何在不创建新列表的情况下反向链接列表? [英] How to reverse a link list without creating new list?

查看:79
本文介绍了如何在不创建新列表的情况下反向链接列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

反向链接列表而不创建新列表?

Reverse the link list without creating new list?

推荐答案

今天是您的幸运日! :-),尽管它在c ++中!

today is your lucky day! :-), though it is in c++!

#include "stdafx.h"
#include <iostream>
using namespace std;

struct Node
{
    int Data;
    Node* Next;

    Node()
    {
        Data =-1;
        Next= NULL;
    }
};


int _tmain(int argc, _TCHAR* argv[])
{
    // fill data into link List
    Node* First= NULL, *Next=NULL,*Temp;

    for(int i =10;i<20;i++)
    {
        Temp = new Node();
        Temp->Data = i;

        Next = First;

        if(Next==NULL)
        {
            First = Temp;
        }
        else
        {
            while((Next->Next!=NULL))
            {
                Next=Next->Next;
            }
            Next->Next = Temp;
        }
    }


    //display data
    cout<<"Display Data"<<endl;
    Next = First;
    while((Next!=NULL))
    {
        cout<<Next->Data<<endl;
        Next=Next->Next;
    }
    // Reverse it  now


    Node* Last=NULL,*ltTemp;



    while(First->Next!=NULL)
    {

        ltTemp = First;
        Temp = First->Next;

        while((Temp->Next!=NULL))
        {
            if(Temp)
                Temp=Temp->Next;
            if(ltTemp)
                ltTemp= ltTemp->Next;
        }
        // Plug the last one
        ltTemp->Next= NULL;

        // Place in reverse order

        if(Last== NULL)
        {
            Last=Temp;

        }
        else
        {
            Next = Last ;
            while((Next->Next!=NULL))
            {
                Next=Next->Next;
            }
            Next->Next = Temp;
        }
    }

    if(Temp)
        Temp->Next= First;

    //display data
    cout<<"Display Data reverse order"<<endl;
    Next = Last;
    while((Next!=NULL))
    {
        cout<<Next->Data<<endl;
        Next=Next->Next;
    }

    /// delete all the allocated memory
    Next = First;
    if(Next)
    while((Next!=NULL))
    {
        Temp = Next;
        Next=Next->Next;
        delete Temp;
    }

    if(Next)
        delete Next;

}


一个:-) ..这次,此逻辑工作更快

one more :-).. this time this logic work faster

#include "stdafx.h"
#include <iostream>
using namespace std;

struct Node
{
    int Data;
    Node* Next;

    Node()
    {
        Data =-1;
        Next= NULL;
    }
};


int _tmain(int argc, _TCHAR* argv[])
{
    // fill data into link List
    Node* First= NULL, *Next=NULL,*Temp;

    for(int i =10;i<20;i++)
    {
        Temp = new Node();
        Temp->Data = i;

        Next = First;

        if(Next==NULL)
        {
            First = Temp;
        }
        else
        {
            while((Next->Next!=NULL))
            {
                Next=Next->Next;
            }
            Next->Next = Temp;
        }
    }


    //display data
    cout<<"Display Data"<<endl;
    Next = First;
    while((Next!=NULL))
    {
        cout<<Next->Data<<endl;
        Next=Next->Next;
    }
    // Reverse it  now


    Node* Last=NULL,*ltTemp;

    Temp= First;
    while(Temp)
    {
        ltTemp = Temp->Next;

        if(Last)
        {
            Temp->Next=Last;
        }
        else
            Temp->Next=NULL;

        Last = Temp;
        Temp=ltTemp;

    }

    //display data
    cout<<"Display Data reverse order"<<endl;
    Next = Last;
    while((Next!=NULL))
    {
        cout<<Next->Data<<endl;
        Next=Next->Next;
    }

    /// delete all the allocated memory
    Next = First;
    if(Next)
    while((Next!=NULL))
    {
        Temp = Next;
        Next=Next->Next;
        delete Temp;
    }

    if(Next)
        delete Next;

}


这是家庭作业吗?..您是否尝试过逻辑自己?

小代码段:-

说您的链接列表是用此类创建的:-
struct Node
{
int数据;
struct Node *下一步;
};

让我给出一个线索,使用temp Node变量进行反转.
is it homework??.. have you tried logic urself?

little code snippet:-

say your linklist is created with this class :-
struct Node
{
int Data;
struct Node * Next;
};

let me give a clue, use temp Node variable to reverse.


这篇关于如何在不创建新列表的情况下反向链接列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆