其中一部分是自己写得,一部分是摘录的,希望站长能批准,我以后一定多多努力上传!
源代码在线查看: 单向链表排序..txt
单向链表排序.
#include
typedef struct Link
{
int data;
struct Link *next;
}linkx,*linky;
linky Init()
{
linky head,p,q,s;
int n=0;
clrscr();
printf("please input 10 num: ");
head=s=(linky)malloc(sizeof(linkx));
scanf("%d",&s->data);
s->next=NULL;
n++;
while(n!=10)
{
s=(linky)malloc(sizeof(linkx));
scanf("%d",&s->data);
p=head;/*每输入一次使用插入的办法排序*/
if(s->datadata)/*小于头结点*/
{
s->next=head;
head=s;
}
else/*其他情况*/
{
while(s->data>p->data&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)/*这个数是当前最大的数*/
{
q->next=s;
s->next=NULL;
}
else
{
s->next=q->next;
q->next=s;
}
}
n++;
}
return head;
}
void Pr(linky p)/*输出链表*/
{
linky q;
printf("Now:\n");
while(p!=NULL)
{
q=p;
printf("%d ",p->data);
p=p->next;
free (q);
}
getch();
}
void main(void)
{linky head;
head=Init();
Pr(head);
}