首页 新闻 会员 周边 捐助

c语言实现算法

0
[已关闭问题] 关闭于 2022-03-05 09:53

已知一个带头结点的单链表H,设计算法实现:以表中第一个元素作为标准,将单链表中所有值小于第一个元素的结点均放在第一个元素结点之前, 所有值大于第一个元素的结点均放在第一个元素结点之后。
使用c语言实现该算法。

study。。的主页 study。。 | 菜鸟二级 | 园豆:204
提问于:2022-03-04 23:37
< >
分享
所有回答(1)
0

早上起来想到一种思路,把单链表H的第一个元素结点单独提取出来定义为temp,定义一个尾指针R从H链表中第二个元素开始遍历,直到空为指,单链表LA使用尾插法存放小于第一个结点元素的值,单链表LB使用头插法存放大于第一个结点元素的值。
然后将LA,temp,LB连接起来,释放不要的内存空间即可。

LinkList think(LinkList L){
     LinkList temp,R,RA,p;
     temp=L->next;
     R=L->next->next;
     //新建两条链表
     LinkList LA,LB;
     LA =(Node *)malloc(sizeof(Node));
     RA=LA;
     LB =  (Node *)malloc(sizeof(Node));
     LB->next=NULL; 
     while(R){
        if(R->data>temp->data){
            //采用头插法
            p=R->next;
            R->next=LB->next;
            LB->next=R;
            R=p;
        }else
        {
            //采用尾插法
            RA->next=R;
            RA=R;
            R=R->next;
          
        }
     }
     RA->next=temp;
     temp->next=LB->next;
     free(LB);
     free(L);
     return LA; 
}
study。。 | 园豆:204 (菜鸟二级) | 2022-03-05 09:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册