三个编译程序,分别是:直接选择排序;有序插入;归并两个单链表
想知道每一句程序运行下的指示是什么(算法/意思)
程序如下:
1直接选择排序:
Linklist * inserSort(Linklist *L) /*直接选择排序*/
{
Linklist *p=L->next;
Linklist *r;
Linklist *q;
int i;
int j;
int x;
int n=lengList(L);
for(i=1;i<n;i++)
{
q=p->next;
for(j=i+1;j<=n;j++)
{
if(p->data>q->data)
{
x=p->data;
p->data=q->data;
q->data=x;
}
q=q->next;
}
p=p->next;
}
return L;
}
2有序插入一个值
void Insertlist(Linklist *L,int x) /*有序插入一个值*/
{
Linklist *p,*r;
r=(Linklist *)malloc(sizeof(Linklist));
r->data=x;
p=L;
while((p->next)&&(p->next->data<x))
p=p->next;
r->next=p->next; p->next=r;
}
3归并俩个单链表
Linklist *Merge(Linklist *L1,Linklist *L2) /*归并俩个单链表*/
{
Linklist *L, *p,*q,*s,*r;
p=L1->next;
q=L2->next;
L=L1;
r=L;
while (p&&q)
{
if (p->data<=q->data)
{
s=p;
p=p->next;
}
else
{
s=q;
q=q->next;
}
r->next=s;
r=s;
}
if (q)
r->next=q;
else
r->next=p;
return L;
}
十分感谢!