转载请注明出处:http://blog.csdn.net/xdz78
#include <stdio.h>
#include <stdlib.h>
//3.15
//定义一个结构体
typedef struct student {
int data;
struct student *next;
}Node ;
Node *create(){//创建一个表内元素分别为1~10的链表
int i;
Node *head,*p1,*p2;
p1=(Node *)malloc(sizeof(Node ));
p1->data=1;
p2=head=p1;
for(i=0;i<9;i++){
p1=(Node *)malloc(sizeof(Node));
p1->data=i+2;
p2->next=p1;
p2=p1;
}
p2->next=NULL;
return head;//返回首地址
}
Node *adjust(Node *head,int i,int m){
int j;
Node *p=head;
if(i==0){
return head;//说明查找的m是链表的第一个元素,所以链表不需要调整
}
for(j=0;j<i-1;j++){
p=p->next;
}
//进行调整,将链表的第i个元素从表中移动到表头,注意:只是对指针进行调整
Node *q=p->next;
p->next=q->next;
q->next=head