单链表交换节点算法

单链表 

#include <stdio.h>

#include <stdlib.h>

typedef struct Node

{

	int data;

	struct Node *next;

}* LinkList,LinkNode;

void Init(LinkList *L)

{

	int i;		

	*L=(LinkList)malloc(sizeof(struct Node));printf("asddddddddddd\n");


	(*L)->next=NULL;

	LinkList p=*L;


	for(i=0;i<10;i++)

	{

		LinkList s=(LinkList)malloc(sizeof(struct Node));

		s->data=i+1;

		s->next=p->next;

		p->next=s;

		p=s;

	}

 } 

void Print(LinkList L)

{

	int i;

	LinkList p=L->next;

	while(p)

	{

		printf("%d ",p->data);

		p=p->next;

	}

	printf("\n");

}

int swap(LinkList *L,int i,int j)

{
	if(i<=0||j<=0)
	{
		printf("");
		return 0;
	}

	LinkList p0,p1,q0,q1;
	p0=(*L);
	p1=(*L);
	q0=(*L);
	q1=(*L);
	while(p1&&i)
	{
		p0=p1;
		p1=p1->next;
		//printf("tiaoshi %d ",p1->data);
		i--;
	}
	if(p1&&i!=0)
	{
		printf("p1-error\n");
		return 0;
	}
	while(q1&&j)
	{
		q0=q1;
		q1=q1->next;
		j--;
	}
	if(q1&&j!=0)
	{
		printf("q-error\n");
		return 0;
	}
	p0->next=p1->next;
	q0->next=q1->next;
	q1->next=p0->next;
	p0->next=q1;
	p1->next=q0->next;
	q0->next=p1;
	
	

}

int main()

{

	LinkList head;


	Init(&head);


	Print(head);
	
	swap(&head,11,5);
	
	Print(head);

}

 

    原文作者:biubiubiubiu19
    原文地址: https://blog.csdn.net/zzw_17805056819/article/details/81408185
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞