有序链表合并的递归和非递归算法
来源:互联网 发布:2004年3d开奖数据 编辑:程序博客网 时间:2024/05/21 09:21
首先是递归算法,形参是两个链表第一个结点的指针。
- Node* mergAction(Node* head1,Node *head2)
- {
- Node *p=NULL;
- if(head1==NULL&&head2==NULL)
- return p;
- else if(head1==NULL)
- return head2;
- else if(head2==NULL)
- return head1;
- else
- {
- if(head1->data < head2->data)
- {
- p = head1;
- p->next = mergAction(head1->next,head2);
- }
- else
- {
- p = head2;
- p->next = mergAction(head1,head2->next);
- }
- return p;
- }
- }
- #include "stdafx.h"
- #include <malloc.h>
- typedef char DATA_TYPE;
- typedef struct node
- {
- DATA_TYPE data;
- struct node *next;
- }LIST_NODE;
- typedef LIST_NODE *plist;
- plist CreateList()
- {
- plist phead,p,r;
- DATA_TYPE ch;
- phead=(plist)malloc(sizeof(LIST_NODE));
- r=p=phead;
- while ((ch=getchar())!='/n')
- {
- p=(plist)malloc(sizeof(LIST_NODE));
- p->data=ch;
- r->next=p;
- r=p;
- }
- p->next=NULL;
- return phead;
- }
- void MergeList(plist &pha, plist &phb, plist &phc)
- {
- plist pa,pb,pc;
- pa=pha->next;
- pb=phb->next;
- pc=phc=pha;
- while(pa && pb)
- {
- if (pa->data<=pb->data)
- {
- pc->next=pa;
- pc=pa;
- pa=pa->next;
- }
- else
- {
- pc->next=pb;
- pc=pb;
- pb=pb->next;
- }
- }
- pc->next=pa ? pa : pb;
- free(phb);
- }
- void ShowList(plist phead)
- {
- plist p;
- p=phead->next;
- printf("--------------------------------------------------/n");
- while(p)
- {
- printf("%c ",p->data);
- p=p->next;
- }
- printf("/n");
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- plist pa,pb,pc;
- pc=NULL;
- pa=CreateList();
- pb=CreateList();
- MergeList(pa,pb,pc);
- ShowList(pc);
- return 0;
- }
0 0
- 有序链表合并的递归和非递归算法
- 有序链表合并的递归和非递归算法
- 递归和非递归方式合并有序链表
- 有序链表的合并(递归&非递归)
- 合并两个有序链表的递归与非递归
- 链表面试题之合并有序的两个线性表-递归和非递归的方法
- 合并两个有序链表 递归和非递归的形式
- 有序单链表的合并:递归和非递归方法
- 合并两个有序链表(递归非递归方法)
- 合并两个有序链表(非递归与递归)
- 剑指offer--递归非递归合并两个有序链表
- 面试题17:合并两个有序链表,递归和非递归实现
- 链表合并的递归和非递归方法
- Java 非递归 和非递归方法 实现两个有序单链表的合并
- 有序链表合并的递归写法
- 链表翻转的递归和非递归算法
- 链表反转的递归和非递归算法
- 合并两个升序单链的递归和非递归算法
- tomcat7下报错,jetty中运行正常,jstl问题!!!
- C++ 中的 explicit 关键字
- 编译QWT
- jni jstring 、char* 类型的转换
- sqlserver 只有一个字段 且是自增长的类型
- 有序链表合并的递归和非递归算法
- console.trace()与重定向混合使用时,造成node进程异常退出
- 【Android设备管理】 利用DevicePolicyManager执行屏幕锁定
- Chapter 3 | Stacks and Queues--两个栈实现队列
- Flex as类文件调用mxml中的控件或方法
- iOS开发如何实现消息推送机制
- LBS基站定位和GPS卫星定位对比
- “学霸君”想通过图像识别和题库匹配来解答学生们不会的题
- Oracle 中的JOIN