python创建一个有序链表_算法2-2:生成递增有序链表+两个链表合并
#include #define Length sizeof(struct node)
typedef struct node
{int data;
struct node *next;
}Lnode;
Lnode *init(Lnode *head) //多組數(shù)據(jù)輸入要用init清空上一組
{
head=(Lnode*)malloc(Length);
if(head!=NULL)
{
head->next=NULL;
return head;
}
}
void increase(Lnode* head, int e ) //數(shù)據(jù)輸入用了一個(gè)生成遞增有序鏈表的函數(shù) 直接在輸入時(shí)排序
{Lnode *p,*q,*f;
q=head;
p=head->next;
while(p&&e>p->data)
{q=p;
p=p->next;
}
f=(Lnode*)malloc(Length);
f->data=e;
f->next=p;
q->next=f;
}
struct node *merge(Lnode *La,Lnode *Lb)
{Lnode *pa,*pb,*pc;
pa=La->next ;pb=Lb->next ;
pc=La;
free(Lb);
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;
}
}
if(pa)
pc->next=pa;
else
pc->next=pb;
return La;
}
void print(Lnode *head)
{ Lnode *p;
p=head->next;
int flag=1;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{int m,n,x,i;
Lnode *A,*B,*C,*p;
A=(Lnode*)malloc(Length);
B=(Lnode*)malloc(Length);
A->next=NULL;
B->next=NULL;
while(scanf("%d",&m)!=EOF)
{A=init(A);
B=init(B);
for(i=1;i<=m;i++)
{scanf("%d",&x);
increase(A,x);
}
scanf("%d",&n);
for(i=1;i<=n;i++)
{scanf("%d",&x);
increase(B,x);
}
{C=merge(A,B);
print(C);}
}
return 0;}
總結(jié)
以上是生活随笔為你收集整理的python创建一个有序链表_算法2-2:生成递增有序链表+两个链表合并的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实训报告pygame_[源码
- 下一篇: 前端交接文档_开发型Web前端和设计型W