#include <stdio.h>
typedef struct LNode{
int data;
struct LNode* next;
}LNode,*linkList;
void initList(linkList &l)
{
l=new LNode;
if(l==NULL)
printf("分配内存失败\n");
else
{
l->next=NULL;
printf("初始化成功\n");
}
}
void insertList(linkList& l,int e,int r)
{
LNode* p=l;
int j=0;
while(p&&(j<r-1))
{p=p->next;++j;}
if(!p||(j>r-1))
printf("错误\n");
else
{
LNode* s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
}
}
int locateList(linkList l,int t,int n)
{
int i;
LNode* p=l->next;
for(i=0;i<n;i++)
{
if(p->data<t)
p=p->next;
else
break;
}
return i+1;
}
void addList(linkList &l,int n)
{
printf("输入元素:");
LNode *tail;
tail=new LNode;
tail=l;
for(int i=0;i<n;i++)
{
LNode* p;
p=new LNode;
int t;
scanf("%d",&t);
int r=locateList(l,t,i);
insertList(l,t,r);
// p->data=t;
// p->next=NULL;
// tail->next=p;
// tail=p;
}
}
void printList(linkList l)
{
LNode* p;
p=l->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int numList(linkList l,int t,int m)
{
int i;
LNode* p=l->next;
for(i=0;i<m;i++)
{
if(p->data<t)
p=p->next;
else if(p->data==t)
return i+1;
else
return 0;
}
//return 0;
}
void mergeList(linkList& la,linkList& lb,int n,int m)
{
LNode* pa=la->next;
LNode* pb=lb->next;
while(pb!=NULL)
{
int i=0;
int r=locateList(la,(pb->data),n+i);
int j=(numList(la,(pb->data),n+i));
printf("r=%d,j=%d,pb=%d\n",r,j,pb->data);
if(r!=j)
{
insertList(la,(pb->data),r);
pb=pb->next;i++;
}
else
{
pb=pb->next;
}
}
}
int main()
{
linkList la,lb;
printf("链表la:");
initList(la);
printf("链表lb:");
initList(lb);
int n;
printf("\nla添加元素个数:");
scanf("%d",&n);
addList(la,n);
printList(la);
int m;
printf("\nlb添加元素个数:");
scanf("%d",&m);
addList(lb,m);
printList(lb);
printf("\n合并为递增链表:");
mergeList(la,lb,n,m);
printList(la);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复