从给定的 LinkedList 在 C++ 中创建一个反向 LinkedList [英] Create a reverse LinkedList in C++ from a given LinkedList

查看:26
本文介绍了从给定的 LinkedList 在 C++ 中创建一个反向 LinkedList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在从给定的链表以相反的顺序创建链表时遇到了一些问题.

I'm having some trouble create a linkedlist in reverse order from a given linkedlist.

我有 Java 背景,刚开始做一些 C++.

I come from a java background, and just started doing some C++.

你能看看我的代码,看看有什么问题吗?我猜我只是在操纵指针而不是创建任何新东西.

Can you check out my code and see what's wrong? I'm guessing I'm just manipulating pointer and not creating anything new.

//this is a method of linkedlist class, it creates a reverse linkedlist
//and prints it

void LinkedList::reversedLinkedList()
{
    Node* revHead;

    //check if the regular list is empty
    if(head == NULL)
       return;

    //else start reversing
    Node* current = head;
    while(current != NULL)
    {
        //check if it's the first one being added
        if(revHead == NULL)
           revHead = current;

        else
        {
            //just insert at the beginning
            Node* tempHead = revHead;
            current->next = tempHead;
            revHead = current;
        }
        current = current->next;

     }//end while

     //now print it
     cout << "Reversed LinkedList: " << endl;

     Node* temp = revHead;
     while(temp != NULL)
     {
         cout << temp->firstName << endl;
         cout << temp->lastName << endl;
         cout << endl;

         temp = temp->next;
      }

}//end method

推荐答案

更简单的一个:遍历你的链表,保存上一个和下一个节点,让当前节点指向上一个:

Easier one: Go through your linked list, save the previous and the next node and just let the current node point at the previous one:

void LinkedList::reversedLinkedList()
{
    if(head == NULL) return;

    Node *prev = NULL, *current = NULL, *next = NULL;
    current = head;
    while(current != NULL){
        next = current->next;
        current->next = prev;
        prev = current;
        current = next;
    }
    // now let the head point at the last node (prev)
    head = prev;
}

这篇关于从给定的 LinkedList 在 C++ 中创建一个反向 LinkedList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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