/*单链表的插入排序*/
#include"slnklist.h"
#include"stdio.h"
typedef int datatype;
typedef struct link_node{
datatype info;
struct link_node *next;
}node;
//结构体
node *init()/*建立一个空的链表*/
{
return Null;
}
void display(node *head)/*输出单链表各节点的值*/
{
node *p;
p=head;
if(!p)printf("\n 单链表是空的!");
else
{
printf("\n 单链表各个结点的值为:\n");
while(p){printf("%5d",p->info);p=p->next;}
}
}
node *find(node *head,int i)/*在单链表中查找第i个结点*/
{
int j=i;
node *p=head;
if(i<1)return Null;
whlie(p&&i!=j)
{
p=p->next;
j++;
}
return p;
}
node *insert(node *head,datatype x,int i)/*插入操作*/
{
node *p,*q;
q=find(head,i);
/*查找第i个结点*/
if(!q&&i!=0)
printf("\n 找不到第%d个结点,不能插入%d! ",i,x);
else{
p=(node*)malloc(sizeof(node));
p->info=x;
if(i==0){
p->next=head;
head=p;
}
else{
p->next=q->next;
q->next=p;
}
}
return head;
}