2つの増加したチェーンテーブルを1つの増加したチェーンテーブルに結合
3517 ワード
単調に増加するチェーンテーブルを2つ入力し、2つのチェーンテーブルを合成して単調に増加するチェーンテーブルを出力します.コードC言語:
// , 2 。
#include
#include
typedef struct Node
{
int data;
struct Node *next;
}Link;
Link * CreateLink(int a[])
{
Link *p,*head,*tail;
head=NULL;
for(int i=0;i<4;i++)
{
p=(Link*)malloc(sizeof(Link));
p->data=a[i];
p->next=NULL;
if(!head) head=tail=p;
else
{
tail=tail->next=p;
}
}
return head;
}
Link *MergeLink(Link *head1,Link *head2)
{
Link *p,*h=NULL,*t;
while(head1&&head2)
{
if(head1->datadata)
{
p=head1;
head1=head1->next;
}
else if(head1->data>head2->data)
{
p=head2;
head2=head2->next;
}
if(!h) h=t=p;
else
{
t=t->next=p;
p->next=NULL;
}
}
if(head1) p=head1;
else p=head2;
t->next=p;
return h;
}
void PrintLink(Link *head)
{
Link* p=head;
while(p)
{
printf("%d",p->data);
p=p->next;
}
}
int main()
{
Link *head1,*head2,*h;
int a[4]={1,3,5,7};
int b[4]={2,4,6,8};
head1=CreateLink(a);
head2=CreateLink(b);
h=MergeLink(head1,head2);
PrintLink(h);
}