链表基本操作
1.创建链表
2.插入节点
node *intsert(node *head,int num)
{
node *p0,*p1,*p2;
p1=head;
p0=(node *)malloc(sizeof(node));
p0->data=num;
while(p0->data>p1->data&&p1->next!=NULL)
{
p2=p1;//将前节点存放起来
p1=p1->next;
}
if(p0->data<=p1->data)
{
if(p1==head)
{
p0->next=p1;
head=head;
}
else
{
p2->next=p0;
p0->next=p1;
}
}
else
{
p1->next=p0;
p0->next=NULL;
}
return head;
}
3.链表排序
node *sort(node *head)
{
node *p;
int i,j,n,temp;
p=head;
n=length(head);//获取链表长度
if(head==NULL||head->next=NULL)//判断链表是否为空
{
return head;
}
for(i=1;i<n;i++)
{
p=head;//将指针定位到链表头
for(j=1;j<n-i;j++)//采用冒泡法进行排序
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
p=p->next;//每一次链表节点后移一位
}
}
return head;
}