Partially Revert Linked List
来源:互联网 发布:有哪些好听的网络歌曲 编辑:程序博客网 时间:2024/06/05 15:49
Problem: partially revert a linked list
Given a HEAD pointer to a linked list and an OFFSET pointer pointing to a node in the linked list. You are asked to write a C/C++ subroutine to revert the part of the list from HEAD to OFFSET:
You are NOT allowed to use recursion. Please follow the definition of the type and function as shown below:
typedef struct _Node...{ int value; struct _Node* next;}Node;Node* Revert(Node* head, Node* offset)...{ //Your code here. Return the head of new linked list.}
And here is my solution:
I partial revert the linked list using a method like a bubble sort way without comparing. However I have made a little change here to make it look like a C++ style.
#include <iostream>
class Node
{
public:
int value;
Node* next;
public:
static Node* Revert( Node*, Node* );
};
Node* Node::Revert( Node* head, Node* offset )
{
Node *p1, *p2;
int tval;
while( head != offset )
{
p1 = head;
p2 = head->next;
while( p2 != offset )
{
tval = p1->value;
p1->value = p2->value;
p2->value = tval;
p1 = p2;
p2 = p1->next;
}
tval = p1->value;
p1->value = p2->value;
p2->value = tval;
offset = p1;
}
return head;
}
// Here is the test code
int main( int argc, char* argv[] )
{
Node* head;
Node* tail;
Node* iter;
//generate the linked list
head = new Node;
head->value = 1;
head->next = NULL;
tail = head;
for ( int i = 2; i < 9; i++ )
{
iter = new Node;
iter->value = i;
iter->next = NULL;
tail->next = iter;
tail = iter;
}
// Output the original list
for( iter = head; iter != NULL; iter = iter->next )
{
std::cout << iter->value << std::endl;
}
head = Node::Revert( head, tail );
std::cout<< "--------------------" << std::endl;
// Output the Reverted list
for( iter = head; iter != NULL; iter = iter->next )
{
std::cout << iter->value << std::endl;
}
return 0;
}
- Partially Revert Linked List
- Linked List
- linked list
- linked list
- Linked List
- Linked List
- Linked List
- linked list
- Linked List
- Linked List
- Linked list
- Linked List
- linked list 倒转linked list
- Linked List->single linked list
- Linked List/Singly-Linked List/Doubly-Linked List
- LeetCode Linked List Cycle && Linked List CycleII
- leetcode Linked List Cycle & Linked List Cycle ||
- Linked List Cycle II Linked List Cycle
- MySQL入门学习 五
- 重温C++之虚拟析构函数
- CSharp 常用函数
- wiki被封了。用GSA还可以看。
- Find Common Ancestor
- Partially Revert Linked List
- Exchange Nodes
- 提高ASP.Net应用程序性能的十大方法_来自:lingfeng的.NET专栏
- fast reports V3.15 输出CJK PDF完美解决方案(the solution of exporting CJK PDF in fast reports)
- 通过身份证号查询出生日期小与当前日期的记录
- ASP.NET设计中的性能优化问题
- 查询text字段中指定字符的出现次数
- 般若波罗蜜多心经
- 命令行参数