C语言 对链表插入排序(BIT自学ing)
#BIT乐学作业
纯粹自我娱乐 大神路过的有错误请不吝赐教QAQ
新的改变`链表自学"
// 链表插入排序
#include "stdio.h"
#include "stdlib.h"
struct node
{ int data;
struct node * next;
} ;
typedef struct node NODE;
typedef struct node * PNODE;
void outlist( PNODE );
void sortlist(PNODE,int); //常规
int main ( )
{ int num=1;
PNODE head;
head = (PNODE)malloc( sizeof(NODE) );
head->next = NULL;
head->data = -1;
while ( num!=0 )
{ scanf("%d", &num);
if ( num!=0 )
sortlist( head, num);
}
outlist( head );
return 0;
}
void outlist( PNODE head )
{ PNODE p;
p = head->next;
while ( p != NULL )
{ printf("%d\n", p->data);
p = p->next;
}
}
void sortlist( PNODE head,int num)
{
PNODE p,q,temp;
int flag=0,flag2=0;
p=(PNODE) malloc (sizeof(NODE));
p->data=num;
for(q=head->next;q!=NULL;)
{
if(p->data == q->data)
{
flag2=1;
break;
}
else
{
q=q->next;
}
}
if(flag2==0)
{
temp=head;
for(q=head->next;q!=NULL;)
{
if(q->data < p->data)
{
temp=q;
q=q->next;
}
else if(q->data > p->data)
{
p->next=q;
temp->next=p;
flag=1;
break;
}
}
if(flag==0)
{
temp->next=p;
p->next=NULL;
}
}
}