c语言有序函数代码 c有序还是无序( 二 )


c语言中的排序代码,求大神,有木有?上面既有排序,又有合并,不想要合并的话 , 把跟这个函数有关的函数,和调用删除就行了?。。?
#includestdio.h
#includestdlib.h
【c语言有序函数代码 c有序还是无序】struct LNode//创建链表结点
{ int data;
struct LNode *next;
};
struct LNode *creat()//链表创建函数
{ struct LNode *head,*p,*rear;
int x,n;
head=(struct LNode *)malloc(sizeof(struct LNode));//链表头指针
rear=head;
puts("输入链表元素,以0结束:");
scanf("%d",x);//链表元素输入
while(x)//链表节点链接
{ p=(struct LNode *)malloc(sizeof(struct LNode));
p-data=https://www.04ip.com/post/x;rear-next=p;
rear=p;scanf("%d",x);
}
rear-next=NULL;
return head-next;//返回链表中第一个有值结点地址
}
struct LNode *Merger_Linklist( struct LNode *L1,struct LNode *L2 )//链表合并函数
{ struct LNode *p;
for(p=L1;p-next!=NULL;p=p-next)//查找链表L1的尾结点地址
{if(p-next==NULL)
break;
}
p-next =L2;//将链表L2链接在L1之后
return L1;
}
struct LNode *Rand(struct LNode *L)//链表排序函数
{struct LNode *Cur;//当前节点
struct LNode *Next;//遍历未排序节点
struct LNode *min;//指向未排序节点中最小节点
int temp;
for(Cur = L; Cur-next!= NULL; Cur = Cur-next)
//从头节点的下一个节点开始,一直到倒数第二个节点
{min = Cur;
for(Next = Cur-next; Next != NULL; Next = Next-next)
{if(min-data Next-data)
{min = Next;}
}
temp = Cur-data;//链表数值交换
Cur-data = https://www.04ip.com/post/min-data;
min-data = https://www.04ip.com/post/temp;
}
return L;
}
void print(struct LNode *head,char a)//链表打印函数
{ struct LNode *p;
p=head;
printf("%c = ( ",a);
while( p )
{ printf("%d ",p-data);
p=p-next;
}
puts(" )\n");
}
struct LNode *DeleteC_Linklist( struct LNode *L )//删除链表重复数
{ int key,had;
struct LNode *h,*p,*r,*q;
for(p=L;p-next!=NULL;p=p-next)
{ had = p-data;
for(r=p,q=p-next;q!=NULL;)
{ key = q-data;
if( key==had )
{ r-next=q-next; h=q;
q=q-next;free( h );
}
else
{ q=q-next;r=r-next;
}
}
}
return L;
}
void main ()//主函数
{ struct LNode *L1,*L2,*L3;
char a='A',b='B',c='C',d='D';
L1 = creat();//创建链表L1
Rand(L1);//对L1排序
puts("\n创建的链表经排序后为:");
print(L1,a);
L2 = creat();//创建链表L2
Rand(L2);//对L2排序
puts("\n创建的链表经排序后为:");
print(L2,b);
L3=Merger_Linklist( L1,L2 );//合并链表L1和L2
Rand(L3);//对合并后的链表排序
puts("合并后的链表为:");
print(L3,c);
DeleteC_Linklist( L3 );
printf("删除重复数后的链表为:\n");
print(L3,d);//打印删除后的链表
}
c语言有序函数代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c有序还是无序、c语言有序函数代码的信息别忘了在本站进行查找喔 。

推荐阅读