从给定的 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;
}
相关文章