将链表La和Lb合并为Lc,
条件: 不给Lc分配新内存(即调整Lc的指针指向两链表符合条件的节点);
主要算法
List *T_O(LNode La,LNode Lb,LNode Lc){
/*判断两链表是否存在一处拜访完,一处有几个村没拜访的情况,如果有就判断是哪几个村,并挨家挨户拜访*/if(La==NULL||Lb==NULL){if(La==NULL&&Lb!=NULL){Lc=Lb;Lc->next=T_O(La,Lb->next,Lc->next);}else if(Lb==NULL&&La!=NULL){Lc=La;Lc->next=T_O(La->next,Lb,Lc->next);}else{ return Lc;}return Lc;}/*if(La==NULL){Lc=Lb;return;}else if(Lb==NULL){Lc=La;return;}*/LNode pa=La;LNode pb=Lb;//这里也可以不用重新任命对象完成任务,可直接御驾亲征if(pa->data<=pb->data){Lc=(LNode)malloc(sizeof(List));Lc=pa;//使Lc指向搜刮的那一个村Lc->next=T_O(La->next,Lb,Lc->next);//抢完一个换下一个}else{Lc=(LNode)malloc(sizeof(List));Lc=pb;Lc->next=T_O(La,Lb->next,Lc->next);}return Lc;
}
主要代码
#include <stdio.h>
#include <stdlib.h>
typedef struct node{struct node *next;int data;
}*LNode,List;List *InitList(LNode L,int a[],int n){L=(LNode)malloc(sizeof(List));//printf("a值为%dn",a[n]);//printf("n为%dn",n);if(n<=3){L->data=a[n];//printf(&
本文发布于:2024-01-31 11:52:16,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667313928325.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |