シングルチェーンテーブル交換ノードアルゴリズム
1409 ワード
シングルチェーンテーブル
#include
#include
typedef struct Node
{
int data;
struct Node *next;
}* LinkList,LinkNode;
void Init(LinkList *L)
{
int i;
*L=(LinkList)malloc(sizeof(struct Node));printf("asddddddddddd
");
(*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("
");
}
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
");
return 0;
}
while(q1&&j)
{
q0=q1;
q1=q1->next;
j--;
}
if(q1&&j!=0)
{
printf("q-error
");
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);
}