C语言链表插入,要源代码,请详细注释,急!!
1个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef struct linknode
{
int data;
struct linknode *next;
}node;
void sort(node **h)
{
node *p,*q,*r,*s,*h1;
int i;
h1=p=(node*)malloc(sizeof(node));
p->next=*h;
while(p->next!=NULL)
{
q=p->next;
r=p;
while(q->next!=NULL)
{
if(q->next->data<r->next->data)
r=q;
q=q->next;
}
if(r!=p)
{
i=r->next->data;
r->next->data = p->next->data;
p->next->data = i;
}
p=p->next;
}
free(h1);
}
void insert(node **h, int i){
node *p,*h1;
h1=(node*)malloc(sizeof(node));
p=(node*)malloc(sizeof(node));
h1->data = i;
h1->next=NULL;
p->next=*h;
while(p->next!=NULL)
{
if(p->next->data > i){
if(*h==p->next){
*h=h1;
h1->next = p->next;
}else{
h1->next=p->next;
p->next = h1;
}
break;
}
p=p->next;
}
if(p->next == NULL)
p->next = h1;
free(p);
}
int main()
{
node *h,*p;
int count,i;
scanf("%d",&count);
h=NULL;
for(;count>0;count--){
p=(node*)malloc(sizeof(node));
scanf("%d",&p->data);
p->next=h;
h=p;
}
sort(&h);
scanf("%d",&i);
insert(&h,i);
printf("result:\n");
for(p=h;p;p=p->next)
printf("%d ",p->data);
printf("\n");
return 0;
}
追问
拜托了,我做了一天都没做好
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询