【每日面试题】链表相关问题2
2012-02-28 20:48
337 查看
题目: 只给定单链表中某个结点p(非空结点),在p前面插入一个结点(删除节点类似)
void insertNode(ListNode* pNode,int k)
{
int m=pNode->data;
pNode->data=k;
ListNode* node=(ListNode*)malloc(sizeof(ListNode));
node->data=m;
node->next=pNode->next;
pNode->next=node;
}
题目:给定单链表,检测是否有环
void HasCicle(ListNode* head)
{
if(head==NULL)
return false;
bool flag=false;
ListNode* p,q;
p=head;
q=head;
while(q!=NULL)
{
p=p->next;
q=q->next;
if(q!=NULL)
q=q->next;
else
break;
if(p==q)
{
flag=true;
break;
}
}
return flag;
}
题目:单链表就地逆置
ListNode* reserve(ListNode* head)
{
if(head==NULL)
return head;
ListNode* p,q,m;
p=head;
head->next=NULL;
q=p->next;
while(q!=NULL)
{
m=q;
q=q->next;
m->next=p;
p=m;
}
return p;
}
题目:两个非降序链表的并集
ListNode* MergerList(ListNode* head1,ListNode* head2)
{
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
ListNode* p1,p2;
if(head1->data>=head2->data)
{
p1=head2;
head2=head2->next;
}
else
{
p1=head1;
head1=head1->next;
}
p2=p1;
while(head1!=NULL&&head2!=NULL)
{
if(head1->data>=head2->data)
{
p2->next=head2;
p2=p2->next;
head2=head2->next;
}
else
{
p2->next=head1;
p2=p2->next;
head1=head1->next;
}
}
if(head2!=NULL)
p2->next=head2;
else
p2->next=head1;
return p1;
}
题目出自于:/article/1439399.html
void insertNode(ListNode* pNode,int k)
{
int m=pNode->data;
pNode->data=k;
ListNode* node=(ListNode*)malloc(sizeof(ListNode));
node->data=m;
node->next=pNode->next;
pNode->next=node;
}
题目:给定单链表,检测是否有环
void HasCicle(ListNode* head)
{
if(head==NULL)
return false;
bool flag=false;
ListNode* p,q;
p=head;
q=head;
while(q!=NULL)
{
p=p->next;
q=q->next;
if(q!=NULL)
q=q->next;
else
break;
if(p==q)
{
flag=true;
break;
}
}
return flag;
}
题目:单链表就地逆置
ListNode* reserve(ListNode* head)
{
if(head==NULL)
return head;
ListNode* p,q,m;
p=head;
head->next=NULL;
q=p->next;
while(q!=NULL)
{
m=q;
q=q->next;
m->next=p;
p=m;
}
return p;
}
题目:两个非降序链表的并集
ListNode* MergerList(ListNode* head1,ListNode* head2)
{
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
ListNode* p1,p2;
if(head1->data>=head2->data)
{
p1=head2;
head2=head2->next;
}
else
{
p1=head1;
head1=head1->next;
}
p2=p1;
while(head1!=NULL&&head2!=NULL)
{
if(head1->data>=head2->data)
{
p2->next=head2;
p2=p2->next;
head2=head2->next;
}
else
{
p2->next=head1;
p2=p2->next;
head1=head1->next;
}
}
if(head2!=NULL)
p2->next=head2;
else
p2->next=head1;
return p1;
}
题目出自于:/article/1439399.html
相关文章推荐
- 【每日面试题】链表相关问题1
- 关于链表的一些经典问题以及相关面试题
- C实现单链表+单链表相关面试题
- 链表面试题之快慢指针问题(一) 查找链表中间节点
- 链表面试题之有环链表问题
- 算法与数据结构面试题(7)-链表“香蕉”问题
- 【程序员面试宝典】链表相关面试题
- 知晓JVM系列(四): JVM相关问题问答(面试题)
- 链表有环相关问题
- 链表的相关面试题
- 链表常见面试题三:解决链表带环问题
- 《剑指offer》面试题57 删除链表中重复的结点 C++ 实现 以及 错误总结 (指针问题)!!
- 链表相关面试题(zz)
- 链表面试题之约瑟夫环问题
- 链表环及其相关问题
- 【链表复习】链表相关面试题
- 大端小端问题总结及相关面试题
- 经典的面试题:链表的相交与环问题 (一)
- c/c++单链表面试题—链表相交问题
- 链表面试题之带环问题