对一个链表进行排序,只对链表排序。
/* Note:Your choice is C IDE */#include "stdio.h"
typedef struct str
{char data;
struct str *next;
}node;
node* create(int *n)
{node *head,*p,*q;
char ch;
head=q=(node *)malloc(sizeof(node));
while((ch=getchar())!='\n')
{p=(node *)malloc(sizeof(node));
p->data=ch;
q->next=p;
q=p;
(*n)++;
}
q->next=NULL;
return head;
}
jh(node *head,int n)
{int i,j,a,b=0;
node *p,*q,*r;
for(i=0;i<n/2;i++)
{a=0;r=head;
while(a<b)
r=r->next;
p=r->next;
q=p->next;
while(q->next!=NULL)
{r->next=q;
p->next=q->next;
q->next=p;
p=r->next;q=p->next;
r=r->next;p=p->next;q=q->next;
}
}
}
void main()
{node *head,*p;
int n=0;
head=create(&n);
jh(head,n);
p=head->next;
while(p)
{printf("%3c",p->data);
p=p->next;
}
}
我一个老师给我出的题,就是让我编写一个程序,对链表进行排序,但是不用对里面的值进行排序的方法排序,而是对链表的链接来排序。