zoukankan      html  css  js  c++  java
  • 链表的就地插入排序

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    
    template <class T>
    struct Entry;
    
    template <class T>
    struct Link_head{
      Entry<T>* next;
      int size;
    };
    
    template <class T>
    struct Entry{
      Entry<T>* next;
      T* element;
    };
    
    template <class T>
    Link_head<T>*
    create_link(T* array, int n)
    {
      Link_head<T>* head=new Link_head<T>;
      Entry<T>** ptr=&head->next;
      for(int i=0; i<n; ++i){
        Entry<T>* entry_elem=new Entry<T>;
        T* element=new T(array[i]);
        entry_elem->element=element;
        *ptr=entry_elem;
        ptr=&entry_elem->next;
      }
      *ptr=NULL;
      head->size=n;
      return head;
    }
    
    template <class T>
    void
    print_link(Link_head<T>* head)
    {
      Entry<T>* entry=head->next;
      while(entry != NULL){
        cout<<*entry->element<<endl;
        entry=entry->next;
      }
    }
    
    template <class T>
    void
    link_sort(Link_head<T>* head)
    {
      Entry<T>* p = head->next;
      Entry<T>* r; //r 是 p的后继
      Entry<T>* q;
      head->next=NULL;
      while(p != NULL){
        r=p->next;
        q=(Entry<T>*)head;
        while(q->next != NULL && *q->next->element<*p->element){
          q=q->next;
        }
        p->next=q->next;
        q->next=p;
        p=r;
      }
    }
    
    int
    main()
    {
      int array[]={20,3, 40, 5, 6, 89, 9};
      int n = sizeof(array)/sizeof(int);
      Link_head<int>* head = create_link(array, n);
      link_sort(head);
      print_link(head);
    }
    
  • 相关阅读:
    访问修饰符的权限。
    字符编码
    3/11 作业
    3/10 作业
    作业 3/9
    流程控制之for循环
    Exception in createBlockOutputStream
    windows上传文件到 linux的hdfs
    win10 配置 hadoop-2.7.2
    hadoop 源码编译
  • 原文地址:https://www.cnblogs.com/zjfdlut/p/2161510.html
Copyright © 2011-2022 走看看