(杂)百度实习的一道题链表逆序,合并两个有序链表

来源:互联网 发布:知不可乎骤得句式 编辑:程序博客网 时间:2024/05/18 02:19

关于链表逆序,这道题都做烂了,很多公司喜欢用这道题,昨天Baidu实习招聘就考了一条这个,回来重新写了下,这道题其实细节还是不少的,上代码

Node *reverseLinkList(Node *pHead){if (pHead==NULL||pHead->next==NULL)  //细节0{return pHead;}Node *pTempFirst=pHead;Node *pTempSecond=pHead->next;pHead->next=NULL;  // 细节1while(pTempSecond!=NULL)  //细节2{Node *pSave=pTempSecond->next;  //细节3pTempSecond->next=pTempFirst;pTempFirst=pTempSecond;pTempSecond=pSave;}return pTempFirst;                   //细节4}</span>

关于合并两个有序链表,确定一个新链表头,然后用这个链表头不断的在两个链表中找下一个,这样的思想,上代码

Node* mergeLinklist(Node *pHead1,Node *pHead2){if (pHead1==NULL){return pHead2;}else if (pHead2==NULL){return pHead1;}Node *pHeadNew=NULL;                         //这里保存一个新的头节点,以便之后作为返回值if (pHead1->nData<pHead2->nData){pHeadNew=pHead1;pHead1=pHead1->next;}else{pHeadNew=pHead2;pHead2=pHead2->next;}Node *pTemp=pHeadNew;                //pTemp作为pHeadNew的copy向下递推,用pTemp->next去接下一个节点while(pHead2!=NULL&&pHead1!=NULL){if (pHead1->nData<pHead2->nData){pTemp->next=pHead1;pHead1=pHead1->next;pTemp=pTemp->next;}else{pTemp->next=pHead2;pHead2=pHead2->next;pTemp=pTemp->next;}}if (pHead1){pTemp->next=pHead1;}if (pHead2){pTemp->next=pHead2;}return pHeadNew;}






0 0
原创粉丝点击