将两个有序链表融合成一个有序链表

来源:互联网 发布:linux命令配置ip地址 编辑:程序博客网 时间:2024/05/22 00:28

已知两个有序链表,将两个有序链表融合成一个有序链表的实现方法:

#include <iostream>using namespace std;typedef struct _listNode{int data;struct _listNode *next;}listNode;void printList(listNode *plist){if(plist == NULL)return;listNode *tlist = plist;while(tlist != NULL){cout << tlist->data << "\t";tlist = tlist->next;}cout << endl;}listNode *listNodeMerge(listNode *p1ist1, listNode *p1ist2){listNode *p1 = p1ist1;listNode *p2 = p1ist2;listNode *pcurr = NULL;listNode *pHead = NULL;listNode *pt = NULL;//先判断链表是否为空if(p1 == NULL && p2 != NULL)return p2;else if(p1 != NULL && p2 == NULL)return p1;else if(p1 == NULL && p2 == NULL)return NULL;//首先选择一个头节点if(p1->data < p2->data){pHead = p1;p1 = p1->next;}else{pHead = p2;p2 = p2->next;}pcurr = pHead; //辅助指针while(p1 != NULL && p2 != NULL){if(p1->data < p2->data){pt = p1;p1 = p1->next;}else{pt = p2;p2 = p2->next;}pcurr->next = pt;pcurr = pcurr->next;}if(p1 != NULL) //其中有一个链表已经指向NULL,而另一个还没有指向NULLpcurr->next = p1;elsepcurr->next = p2;return pHead;}int main(){//为方便先定义两个有序链表,也可用new(malloc)的方式生成链表listNode n1,n3,n5;listNode n2,n4,n6,n7;n1.data = 1, n1.next = &n3;n3.data = 2, n3.next = &n5;n5.data = 3, n5.next = NULL;n2.data = 0, n2.next = &n4;n4.data = 4, n4.next = &n6;n6.data = 6, n6.next = &n7;n7.data = 9, n7.next = NULL;listNode *p1 = &n1;listNode *p2 = &n2;//打印该链表cout << "list1:\n";printList(p1);cout << "list2:\n";printList(p2);//打印融合后的链表cout << "After merge list:\n";listNode *pnew = listNodeMerge(p1, p2);printList(pnew);return 0;}


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 工商银行u盾丢了怎么办 银行不让开u盾怎么办 手机u盾识别不了怎么办 绿森商城不退款怎么办 电信手机号码过户积分清零怎么办 被电话诈骗骗了怎么办 诈骗电话骗了钱怎么办 被网友骗了一千块钱怎么办 被网友骗了1000块怎么办 微信红包被骗100怎么办 3m投资钱要不回来怎么办 手机照片超过3m怎么办 小说大于3m看不了怎么办 携程订单删除了怎么办 绿叶会员密码忘了怎么办 账号对名错了怎么办 lv双肩包肩带短了怎么办 微信充q币被骗了怎么办 qq隐私密码忘了怎么办 qq锁屏密码忘了怎么办 qq手势密码忘记了怎么办 qq红包的密码忘了怎么办 qq密码被改了怎么办啊 手机qq密码忘了怎么办 腾讯安全中心冻结解冻进不去怎么办 qq钱包充值限额怎么办 qq没绑卡支付密码忘了怎么办 手机qq停止运行该怎么办 手机不支持qq软件运行怎么办 王者传奇冲元宝不到账怎么办 支付宝充值地下城点卷冲错了怎么办 dnf点券冲错了怎么办 百家号改了手机绑定找不到了怎么办 银行卡换了网银怎么办 qq没有银行卡转不出钱怎么办 qq钱包限制一万怎么办 qq余额超过20万怎么办 扣扣忘记了密码怎么办 qq钱包发不出来怎么办 qq支付密码忘了怎么办? 扣扣上转账错了怎么办