由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个Linkedlist面试题的教训
相关主题
remove a node in O(1) from link list再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5,Interview question::
"简单的"linklist的问题问一个题目
问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5mirror 一个binary tree, 用non-recursive解法怎么做
array 转换成 linkedlist, 在线等, 挺急的--help is still nee问个打印树的问题
150上这个是不是不对? (转载)Google second phone interview
A家面经 (转载)懒得写了,想练手的就写写贴在这里吧
Reverse LinkedList II 怎样一遍写对啊?怎么理解递归解决的“swap every two elements in a linked list”?
相关话题的讨论汇总
话题: root话题: next话题: null话题: head话题: reverse
进入JobHunting版参与讨论
1 (共1页)
f*******r
发帖数: 1086
1
大家都知道有一个简单的singly linked list面试
题目就是reverse singly linked list.
在与MS欧洲电面的过程中,interviewer要我online
coding出这个函数,我因为之前都复习过,很快
写了一个recursive 版本的代码:
SLNode* head;
SLNode* Reverse(SLNode* root)
{
assert(root!=NULL);
if(root->next!=NULL)
{
Reverse(root->next);
root->next->next = root;
return(root);
}
else
head = root;
}
当时想法是代码简洁一点,但是interviewer看过后
问我如果用recursion的话,会有什么问题?经提示
才想到,recursion会使用stack memory,当链表
的节点非常多的时候会有问题,这个的确是开始写
这个函数的时候没有考虑到scales上的问题,
Z*****Z
发帖数: 723
2
谢分享,bless

【在 f*******r 的大作中提到】
: 大家都知道有一个简单的singly linked list面试
: 题目就是reverse singly linked list.
: 在与MS欧洲电面的过程中,interviewer要我online
: coding出这个函数,我因为之前都复习过,很快
: 写了一个recursive 版本的代码:
: SLNode* head;
: SLNode* Reverse(SLNode* root)
: {
: assert(root!=NULL);
: if(root->next!=NULL)

r****o
发帖数: 1950
3
Linked List的最初的head指针是不是应该保存下来,最后指向NULL?

【在 f*******r 的大作中提到】
: 大家都知道有一个简单的singly linked list面试
: 题目就是reverse singly linked list.
: 在与MS欧洲电面的过程中,interviewer要我online
: coding出这个函数,我因为之前都复习过,很快
: 写了一个recursive 版本的代码:
: SLNode* head;
: SLNode* Reverse(SLNode* root)
: {
: assert(root!=NULL);
: if(root->next!=NULL)

f*******r
发帖数: 1086
4
Sorry,是的,这个的确是需要的!
在else里面给head赋值之前加一句
head.next = NULL;
head = root;
应该就可以了。

【在 r****o 的大作中提到】
: Linked List的最初的head指针是不是应该保存下来,最后指向NULL?
p******r
发帖数: 2999
5
node* reverse(nood* root) {
node *head, *tail, *temp;
if(root==null) return null;
head=tail=root;
while(tail->next != null) {
temp=tail->next;
tail->next=temp->next; // remove one element after tail
temp->next=head; // insert it to the head
head=temp;
}
return head;
}

【在 f*******r 的大作中提到】
: 大家都知道有一个简单的singly linked list面试
: 题目就是reverse singly linked list.
: 在与MS欧洲电面的过程中,interviewer要我online
: coding出这个函数,我因为之前都复习过,很快
: 写了一个recursive 版本的代码:
: SLNode* head;
: SLNode* Reverse(SLNode* root)
: {
: assert(root!=NULL);
: if(root->next!=NULL)

d**f
发帖数: 264
6
Node* Reverse(Node* head){

Node *current, *next, *result;
current = head;
result =NULL;

while( current != NULL ){
next = current->next;
current->next = result;
result = current;
current = next;
};
return result;
};
1 (共1页)
进入JobHunting版参与讨论
相关主题
怎么理解递归解决的“swap every two elements in a linked list”?array 转换成 linkedlist, 在线等, 挺急的--help is still nee
弱问题,连反转链表都看不懂了150上这个是不是不对? (转载)
一道面试题:Flatten a multilevel linked listA家面经 (转载)
一个Java面试题目Reverse LinkedList II 怎样一遍写对啊?
remove a node in O(1) from link list再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5,Interview question::
"简单的"linklist的问题问一个题目
问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5mirror 一个binary tree, 用non-recursive解法怎么做
相关话题的讨论汇总
话题: root话题: next话题: null话题: head话题: reverse