#include
#include
typedef struct LNode
{
int data;
LNode* next;
}LNode, *LinkList;
void InitList (LinkList L)
{
L=(LinkList)malloc (sizeof(LNode));
L->next = NULL;
}
void UpList(LinkList L, int x)
{
LinkList p = L;
while(p->next)
{
p=p->next;
}
LinkList temp = (LinkList)malloc(sizeof(LNode));
temp->data = x;
temp->next = NULL;
p->next = temp;
}
void DisList(LinkList L)
{
LinkList p = L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}
void DestroyList(LinkList L)
{
LinkList p = L,q = p->next;
while(q!=NULL)
{
free(p);
p = q;
q = p->next;
free(p);
}
}
int Listlength(LinkList L)
{
if (L==NULL) {
return 0;
}
LinkList p = L;
int a = 0;
while(p->next!=NULL)
{
a++;
p = p->next;
}
return (a);
}
void StickList (LinkList ha,LinkList hb,LinkList hc ,int m,int n)
{
LinkList p = NULL;
if(m==0)
{
hc=hb;
free(ha);
}
else if(n==0)
{
hc=ha;
free(hb);
}
else if(m<n)
{
p=ha->next;
while(p->next != NULL)
p=p->next;
p->next = hb->next;
hc=ha;
free(hb);
}
else
{
p=hb->next;
while(p->next!=NULL)
p=p->next;
p->next = ha->next;
hc=hb;
free(ha);
}
}
int main() {
LinkList ha, hb, hc;
InitList(ha);
InitList(hb);
InitList(hc);
for (int i = 0;i<100;i++)
UpList(ha,i);
printf("链表ha的元素有\n");
DisList(ha);
int m = Listlength(ha);
for(int j=0;j<100;j++)
UpList(hb,j);
printf("链表hb的元素有\n");
DisList(hb);
int n = Listlength(hb);
StickList(ha,hb,hc, m, n);
printf("链表hc的元素有\n");
DisList(hc);
return 0;
}