连接两个循环链表的过程:
lnode * head = (lnode *)malloc (sizeof(lnode)); head->next = head; //循环链表为空;head为头结点指针; 
//循环链表
typedef struct node
{
int data;
struct node *next;
}Lnode;
typedef Lnode* head;
void init(head *l)
{
*l = (Lnode *)malloc(sizeof(Lnode));
(*l)->data = 0;
(*l)->next = *l;
}
void push_front(head l,int value)
{
Lnode *p = NULL;
p = (Lnode*)malloc(sizeof(Lnode));
p->data = value;
p->next = l->next;
l->next = p;
}
void link_lnode(head l,head l1)
{
head p = l->next;
head q = l1->next;
while(p->next != l)
{
p = p->next;
}
while(q->next != l1)
{
q = q->next;
}
p->next = l1->next;
free(l1);
q->next = l;
}
void print(Lnode *l)
{
head p = NULL;
p = l->next;
while(p->next != l)
{
printf("%d ",p->data);
p = p->next;
}
printf("%d\n",p->data);
}
int main(int argc,char ** argv)
{
int i = 0;
head l = NULL;
head l1 = NULL;
init(&l);
init(&l1);
for(i = 0;i < 5;i++)
{
push_front(l,rand()%10);
push_front(l1,rand()%100);
}
print(l);
print(l1);
link_lnode(l,l1);
print(l);
}
静态链表模式:(一维数组模拟单链表)
