王道数据结构p40——10
代码
#include<stdio.h> #include<stdlib.h> 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<n;i++){
p = (lnode*)malloc(sizeof(lnode));
p->data = a[i];
s->next = p;
s=p;
}
s->next = NULL;
dis(l,l2);
printlink(l);
printf("11111\n");
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("%d\n",s->data);
s=s->next;
}
}
注:插入l2链表用的是头插法(因为我感觉更方便),所以l2的顺序是相反的,如下图