#include#include typedef struct lnode{ int data; lnode *next; }lnode,*linklist; void dis(linklist &l,linklist &l2); void printlink(linklist l); int main(){ linklist l; linklist l2; l = (lnode*)malloc(sizeof(lnode)); l->next = NULL; l2 = (lnode*)malloc(sizeof(lnode)); l2->next = NULL; int a[10] = {2,6,1,3,4,7,5}; //2 1 4 5 //6 3 7 lnode *s,*p; s=l; int n=7; for(int i=0;i p = (lnode*)malloc(sizeof(lnode)); p->data = a[i]; s->next = p; s=p; } s->next = NULL; dis(l,l2); printlink(l); printf("11111n"); printlink(l2); return 0; } void dis(linklist &l,linklist &l2){ int i = 1; lnode *p,*pre,*p2; p=l->next; pre = l; p2 = l2; while(p!=NULL){ if(i%2 == 0){ pre->next = p->next; p->next = l2->next; l2->next = p; p = pre->next; } else{ pre = pre->next; p = p->next; } i++; } } void printlink(linklist l){ lnode *s=l->next; while(s!=NULL){ printf("%dn",s->data); s=s->next; } }
注:插入l2链表用的是头插法(因为我感觉更方便),所以l2的顺序是相反的,如下图



