由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个题,用递归方法
相关主题
一道linked list编程题问个reverse linked list
yelp 面经生成树
amazon onsite 面经合并两个排序好的链表, 优解?
一到电面题LeetCode 新题 graph clone
哪位大侠帮我看看这个codedelete a node in linked list
Leetcode新题 Copy List with Random Pointeramazon on-site interview
请教个G题目sort list java solution
插入节点到complete binary tree的末尾反转链表递归怎么写?
相关话题的讨论汇总
话题: head话题: node话题: num话题: 递归话题: 10
进入JobHunting版参与讨论
1 (共1页)
c*****y
发帖数: 90
1
Given an unsigned integer 1345, the program constructs a linked list of
1->3->4->5.
有人先得出一个linked list: 5->4->3->1,然后reverse得到1->3->4->5. 我想直接得到
1->3->4->5,非递归很容易,用递归如何做?我迷惑在跳出递归的那步如何写?if(num
/10==0)
我的部分code如下,有疑问的地方用问号表示了。
Node * ConstructLinkedList(in num, Node *head)
{
if(num==0)
{
head=new Node(num, NULL);
return head;
}
if(num/10=0)
{
head->data=num;
head->next=????
}
else
{
head=new Node();
head->data=num%10;
head=ConstructLinkedL
c*********n
发帖数: 1057
2
不用单独处理if(num/10=0)吧,不然你1004怎么弄呢?
我觉得可以这样:

得到
num
if(head == NULL){
else
return head;
newnode = new Node();
newnode->data = num%10;
newnode->next=head;//insert into the head of the list
ConstructLinkedList(num/10,newnode);

【在 c*****y 的大作中提到】
: Given an unsigned integer 1345, the program constructs a linked list of
: 1->3->4->5.
: 有人先得出一个linked list: 5->4->3->1,然后reverse得到1->3->4->5. 我想直接得到
: 1->3->4->5,非递归很容易,用递归如何做?我迷惑在跳出递归的那步如何写?if(num
: /10==0)
: 我的部分code如下,有疑问的地方用问号表示了。
: Node * ConstructLinkedList(in num, Node *head)
: {
: if(num==0)
: {

c*****y
发帖数: 90
3
1004%10再/10就可以得到4、0、0、1呀。不单独处理if(num/10=0),我觉得就不会知道
何时跳出
递归,例如在1004这个例子中,你就不知道在1这个数字处要跳出递归。

【在 c*********n 的大作中提到】
: 不用单独处理if(num/10=0)吧,不然你1004怎么弄呢?
: 我觉得可以这样:
:
: 得到
: num
: if(head == NULL){
: else
: return head;
: newnode = new Node();
: newnode->data = num%10;

c*********n
发帖数: 1057
4
当前数字是1的时候list里面是0->0->4->NULL对吧
然后在执行一次,把1加到head,list变成:1->0->0->4->null
然后num变成0,在调用方法,发现num==0就退出了啊

【在 c*****y 的大作中提到】
: 1004%10再/10就可以得到4、0、0、1呀。不单独处理if(num/10=0),我觉得就不会知道
: 何时跳出
: 递归,例如在1004这个例子中,你就不知道在1这个数字处要跳出递归。

c*****y
发帖数: 90
5
我开始也是这样想的,这样的话只需考虑if(num==0) return head就可以了,但后来我
想如果num本来就等于0呢,那么你就得创建一个data为0的linked list node。这样就
不对了.

【在 c*********n 的大作中提到】
: 当前数字是1的时候list里面是0->0->4->NULL对吧
: 然后在执行一次,把1加到head,list变成:1->0->0->4->null
: 然后num变成0,在调用方法,发现num==0就退出了啊

c*********n
发帖数: 1057
6
你看我的回帖,num=0的时候判断过了
我直接在你的代码上改的

【在 c*****y 的大作中提到】
: 我开始也是这样想的,这样的话只需考虑if(num==0) return head就可以了,但后来我
: 想如果num本来就等于0呢,那么你就得创建一个data为0的linked list node。这样就
: 不对了.

c*****y
发帖数: 90
7
谢谢!这样就没问题了,我没想到在num=0的时候判断head来区分。

【在 c*********n 的大作中提到】
: 你看我的回帖,num=0的时候判断过了
: 我直接在你的代码上改的

g*******y
发帖数: 1930
8
可以判断i/=10之后,如果i是0了,就不继续递归了。
不管i是不是0,i%10是肯定会成为一个节点的。
如果输入是0,那么就输出一个单节点就结束了
如果输入不是0,最后i变成0以后也就结束了。
pair construct(int i){
Node *cur = new Node;
cur->data = i%10;
cur->next = 0;
i/=10;
if(i){
pair r = construct(i);
r->second->next = cur;
return make_pair(r->first,cur);
}else{
return make_pair(cur,cur);
}
}
o********r
发帖数: 79
9
我写了下。
node* ConstructLinedList(int num, node* head)
{
if ((num==0)&&head)
return head;
node* newhead = new node();
newhead->value = num%10;
newhead->next = head;
head = ConstructLinedList(num/10, newhead);
}

得到
num

【在 c*****y 的大作中提到】
: Given an unsigned integer 1345, the program constructs a linked list of
: 1->3->4->5.
: 有人先得出一个linked list: 5->4->3->1,然后reverse得到1->3->4->5. 我想直接得到
: 1->3->4->5,非递归很容易,用递归如何做?我迷惑在跳出递归的那步如何写?if(num
: /10==0)
: 我的部分code如下,有疑问的地方用问号表示了。
: Node * ConstructLinkedList(in num, Node *head)
: {
: if(num==0)
: {

c*****y
发帖数: 90
10
谢谢大家。再问个递归的方法,如何reverse doubly linked list?
c*****y
发帖数: 90
11
Reverse a doubly linked list.
Node *RevDList(Node *head)
{
if (head==NULL) return head;
Node *temp = head->Next;
head->Next = head->Prev;
head->Prev = temp;
if (!temp) return head;
return RevDList(temp);
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
反转链表递归怎么写?哪位大侠帮我看看这个code
做了一下merge BSTLeetcode新题 Copy List with Random Pointer
【我自己写的LinkedList为什么总有错?】请教个G题目
C++ Q76: singly linked list -- 这个逆序打印有什么错?插入节点到complete binary tree的末尾
一道linked list编程题问个reverse linked list
yelp 面经生成树
amazon onsite 面经合并两个排序好的链表, 优解?
一到电面题LeetCode 新题 graph clone
相关话题的讨论汇总
话题: head话题: node话题: num话题: 递归话题: 10