您的位置:首页 > 职场人生

【每日面试题】链表相关问题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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: