boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 帮忙看一段小程序有没问题,谢谢
相关主题
remove a node (and its memory) from a doubly linked list
reverse linked list 问题, double 和 single 的不同
BinaryTree to DoublyLinkedList
一道linked list编程题
请教一道单链表问题
感觉今天结结实实被烙印阴了
【我自己写的LinkedList为什么总有错?】
Programming interview exposed 上面的那道NULL or Cycle的linked list题
看不懂这题
今天Google电面的一道题
相关话题的讨论汇总
话题: node话题: head话题: null话题: prev话题: llist
进入JobHunting版参与讨论
1 (共1页)
s****A
发帖数: 80
1
search for a node in a doubly linked circular list
假设只有一个match
node * llist::search(int val){
node *t=head, *p=NULL;
while(t)
{
if (t->data==val) {p=t; break;}
else if(t==head->prev) break;
else t=t->next;
}
return p;
}
l*****a
发帖数: 14598
2
1)why use p? i assume p is t...
2)how do u initialize head?
3)since u mentioned that there is only one match, this may not be an issue
but is it possible that head is null?

【在 s****A 的大作中提到】
: search for a node in a doubly linked circular list
: 假设只有一个match
: node * llist::search(int val){
: node *t=head, *p=NULL;
: while(t)
: {
: if (t->data==val) {p=t; break;}
: else if(t==head->prev) break;
: else t=t->next;
: }

s****A
发帖数: 80
3
initialize head的constructor
llist::llist(int d){
head=new node(NULL, NULL, d);
head->prev=head;
head->next=head;
}
node的定义
struct node{
node *prev, *next;
int data;
node(node *a, node *b, int d):prev(a),next(b),data(d){
if(prev) prev->next=this;
if(next) next->prev=this;
};
请指点

【在 l*****a 的大作中提到】
: 1)why use p? i assume p is t...
: 2)how do u initialize head?
: 3)since u mentioned that there is only one match, this may not be an issue
: but is it possible that head is null?

s****A
发帖数: 80
4
使用p是希望在没有找到match的时候return NULL

【在 l*****a 的大作中提到】
: 1)why use p? i assume p is t...
: 2)how do u initialize head?
: 3)since u mentioned that there is only one match, this may not be an issue
: but is it possible that head is null?

p****e
发帖数: 3548
5
这个死循环吧
c********t
发帖数: 5706
6
不懂c++,帮你瞎改一下
node * llist::search(int val, node * head){
node *t=head;
while(t!=head->prev)
{
if (t->data==val) return t;
t=t->next;
}
return NULL;
}

【在 s****A 的大作中提到】
: 使用p是希望在没有找到match的时候return NULL
s****A
发帖数: 80
7
谢谢,不过这段code是不是有点问题
如果match正好发生在head->prev这个node这里
你的code仍然会返回NULL啊

【在 c********t 的大作中提到】
: 不懂c++,帮你瞎改一下
: node * llist::search(int val, node * head){
: node *t=head;
: while(t!=head->prev)
: {
: if (t->data==val) return t;
: t=t->next;
: }
: return NULL;
: }

c********t
发帖数: 5706
8
你说的很对,改了。
node * llist::search(int val, node * head){
if(!head) return NULL;
node *t=head;
do
{
if (t->data==val) return t;
t=t->next;
}while(t!=head->prev);
return NULL;
}

【在 s****A 的大作中提到】
: 谢谢,不过这段code是不是有点问题
: 如果match正好发生在head->prev这个node这里
: 你的code仍然会返回NULL啊

M********n
发帖数: 34
9
既然是double linked circular,
走两格,判断前后node是不是, 判断是不是tail,
会不会省点?
1 (共1页)
进入JobHunting版参与讨论
相关主题
今天Google电面的一道题
LinkedIn Onsite 面经
问一题
哪个高手能指出我程序的问题 (20几行的代码)
delete a node in linked list
版上看到的几道F家的题目
LRU的多线程版本,这个答案有问题吗
也发一个 F,L,G 电面
题目: iterative binary tree post order traversal
树 inorder下个节点最好办法是啥
相关话题的讨论汇总
话题: node话题: head话题: null话题: prev话题: llist