izumi_tan
2016-06-20 23:56
采纳率: 42.9%
浏览 1.5k
已采纳

求解,如何用链表实现冒泡排序?链表里面的数据交换如何实现?

#include
using namespace std;
struct ListNode
{
int num;
ListNode *next;
};

ListNode *create(int n)
{ListNode *p,*tail=0,*head=0;
for(int j=0;j {p=new ListNode;cin>>p->num;
p->next=0;
if(head==0)head=p;
else tail->next=p;
tail=p;
}
return head;
}

void Bubble_sort(int n)
{ListNode *now=0,*ne=0,*tail=0,*head=0;
int temp;
head=tail=create(n);
for(int i=1;i {tail=head;
for(int j=1;j {now=tail;
ne=tail->next;
if((now->num)>(ne->num))
{
temp=(now->num);
(now->num)=(ne->num);
(ne->num)=temp;
tail=tail->next;
}
}
}
tail=head;
for(int k=0;k {
coutnum<<' ';
tail=tail->next;
}
}
int main()
{
int leng;
cin>>leng;
Bubble_sort(leng);

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 小灸舞 2016-06-21 01:41
    已采纳

    两个错误:
    1.内存j循环for(int j=1;j<=n-i;n++)应该是for(int j=1;j<=n-i;j++)
    2.tail=tail->next;应该放到if外面,而不是if里面

     #include<iostream>
    using namespace std;
    struct ListNode
    {
        int num;
        ListNode *next;
    };
    
    ListNode *create(int n)
    {
        ListNode *p,*tail=0,*head=0;
        for(int j=0;j<n;j++)
        {
            p=new ListNode;
            cin>>p->num;
            p->next=0;
            if(head==0)
                head=p;
            else 
                tail->next=p;
            tail=p;
        }
        return head;
    }
    
    
    void Bubble_sort(int n)
    {
        ListNode *now=0,*ne=0,*tail=0,*head=0;
        int temp;
        head=tail=create(n);
        for(int i=1;i<n;i++)
        {
            tail=head;
            for(int j=1;j<=n-i;j++)
            {
                now=tail;
                ne=tail->next;
                if((now->num)>(ne->num))
                {
                    temp=(now->num);
                    (now->num)=(ne->num);
                    (ne->num)=temp;
                }
                tail=tail->next;
            }
        }
        tail=head;
        for(int k=0;k<n;k++)
        {
            cout<<tail->num<<' ';
            tail=tail->next;
        }
    }
    int main()
    {
        int leng;
        cin>>leng;
        Bubble_sort(leng);
    
    }
    
    

    图片说明

    点赞 打赏 评论

相关推荐 更多相似问题