单链表冒泡排序

简介: #include<iostream>#include<cstdio>#include <malloc.h>using namespace std;typedef struct node{ int data; struct node *next;}linklist;linklist* init(){ linklist* he
#include<iostream>
#include<cstdio>
#include <malloc.h>
using namespace std;
typedef struct node{
  int data;
   struct node *next;
}linklist;
linklist* init()
{
    linklist* head;
    head=(linklist*)malloc(sizeof(linklist));
    head->next=NULL;
    return head;
}
void sort(linklist* head)
{
    linklist *p1,*p2;
    for(p1=head;p1!=NULL;p1=p1->next)
      for(p2=p1->next;p2!=NULL;p2=p2->next)
        {
            if(p1->data>p2->data)
            {
                int temp=p1->data;
                p1->data=p2->data;
                p2->data=temp;
            }
        }
}
void add(linklist *head,int x)
{
    linklist *p,*q=head;
    p=(linklist*)malloc(sizeof(linklist));
    p->data=x;
    p->next=NULL;
    while(q->next)
        q=q->next;
    q->next=p;
}
void show(linklist *head)
{
    linklist *p=head;
    cout<<"升序排序之后:"<<endl;
    while(p->next)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}
int main()
{
    int n,x;
    linklist *p;
    p=init();
    cout<<"输入元素个数:"<<endl;
    cin>>n;
    cout<<"输入元素:"<<endl;
    for(int i=0;i<n;i++)
     {
         cin>>x;
         add(p,x);
     }
     sort(p);
     show(p);
    return 0;
}

目录
相关文章
|
16天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
27天前
|
算法 C++
【Leetcode】单链表常见题
本节内容我们来讲解常见的几道单链表的题型,文末会赋上单链表增删查,初始化等代码
|
1月前
【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序
【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序
|
1月前
|
搜索推荐
【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序
【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序
29 3
|
2月前
|
存储
【挖坑&前后指针版】快速排序(3)
【挖坑&前后指针版】快速排序(3)
18 0
|
6月前
直接插入,希尔排序,选择排序
直接插入,希尔排序,选择排序
|
8月前
【交换排序】冒泡排序 与 快速排序
【交换排序】冒泡排序 与 快速排序
|
10月前
快速排序3(前后指针法)
快速排序3(前后指针法)
|
10月前
|
存储
快速排序(非递归)
快速排序(非递归)
【Leetcode——排序的循环链表】
一、力扣题之排序循环链表 题目如下:航班直达!! 二、解题思路 刚看到直到题我还是很迷的,没有写过类似的题目。 当我看到官方题解时,嘿嘿嘿三个字形容此时的心情。 首先需要知道,这道题是升序的,但是当我们找到最大节点时,最大节点的next是最小节点,这是循环链表的缘故