lc24-两两交换临近结点(1-2,3-4交换)

#include<stdio.h>
#include<iostream>
using namespace std;
typedef struct node{
    int data;
    node *next;
}linklist;
linklist *create(int n){
    linklist *head,*p,*q;
    head=(linklist*)malloc(sizeof(linklist));
    head->next=NULL;
    q=head;
    int x=0;
    for(int i=0;i<n;i++){
        p=(linklist*)malloc(sizeof(linklist));
        scanf("%d",&x);
        p->data=x;
        p->next=q->next;
        q->next=p;
        q=p;
    }
    return head;
}
void pri(linklist *head){
    linklist *m=head->next;
    while(m!=NULL){
        printf("%d ",m->data);
        m=m->next;
    }
}
linklist *swapPairs(linklist *head){
    linklist *pre=head,*p=head->next,*q,*k;
    if(p==NULL||p->next==NULL){
        return head;
    }
    q=p->next;
    while(p!=NULL&&q!=NULL){
        k=q->next;
        pre->next=q;
        q->next=p;
        p->next=k;
        if(k==NULL){
            return head;
        }
        pre=p;
        p=k;
        q=k->next;
    }
}
void main(){
    linklist *head=create(5);
    swapPairs(head);
    pri(head);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容