zoukankan      html  css  js  c++  java
  • c语言实现基本的数据结构(二) 链表(包括链表的三种简单排序算法)

    #include "stdafx.h"
    #include <stdlib.h>
    //创建一个节点,data为value,指向NULL
    Node* Create(int value){
        Node* head = (Node*)malloc(sizeof(Node));
        head->data = value;
        head->next = NULL;
        return head;
    }
    //销毁链表
    bool Destroy_List(Node* head){
        Node* temp;
        while (head){
            temp = head->next;
            free(head);
            head = temp;
        }
        head = NULL;
        return true;
    }
    //表后添加一个节点,Create(value)
    bool Append(Node* head,int value){
        Node* n = Create(value);
        Node* temp = head;
        while (temp->next){
            temp = temp->next;
        }
        temp->next = n;
        return 0;
    }
    //打印链表
    void Print_List(Node* head){
        Node* temp = head->next;
        while (temp){
            printf("%d->", temp->data);
            temp = temp->next;
        }
        printf("
    ");
    }
    //在链表的第locate个节点后(头节点为0)插入创建的节点Create(value)
    bool Insert_List(Node* head, int locate, int value){
        Node* temp = head;
        Node* p;
        Node* n = Create(value);
        if (locate < 0)
            return false;
        while (locate--){
            if (temp->next == NULL){
                temp->next = Create(value);
                return true;
            }
            temp = temp->next;
        }
        p = temp->next;
        temp->next = n;
        n->next = p;
        return true;
    }
    //删除第locate个节点后(头节点为0)的节点
    bool Delete_List(Node* head, int locate){
        Node* temp = head;
        Node* p;
        if (locate < 0)
            return false;
        while (locate--){
            if (temp == NULL){
                return false;
            }
            temp = temp->next;
        }
        p = temp->next->next;
        free(temp->next);
        temp->next = NULL;
        temp->next = p;
        return true;
    }
    //获取链表长度(不包括头节点)
    int Size_List(Node* head){
        Node* temp = head;
        int size = 0;
        while (temp->next){
            temp = temp->next;
            size++;
        }
        return size;
    }
    //链表的三种排序(选择,插入,冒泡)
    bool Sort_List(Node* head){
        int t = 0;
        int size = Size_List(head);
        //选择排序
        /*for (Node* temp = head->next; temp != NULL; temp = temp->next){
            for (Node* p = temp; p != NULL; p = p->next){
                if (temp->data > p->data){
                    printf("换%d和%d
    ", temp->data, p->data);
                    t = temp->data;
                    temp->data = p->data;
                    p->data = t;
                }
            }
        }*/
        //插入排序
        /*for (Node* temp = head->next->next; temp != NULL; temp = temp->next){
            for (Node* p = head; p->next != NULL; p = p->next){
                if (p->next->data > temp->data)
                {
                    printf("换%d和%d
    ", temp->data, p->next->data);
                    t = temp->data;
                    temp->data = p->next->data;
                    p->next->data = t;
                }
            }
        }*/
        //冒泡排序
        for (Node* temp = head->next; temp->next != NULL; temp = temp->next){
            for (Node* p = head->next; p->next != NULL; p = p->next){
                if (p->data > p->next->data){
                    t = p->data;
                    p->data = p->next->data;
                    p->next->data = t;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    JSON以及Java转换JSON的方法(前后端经常使用处理方法)
    让cocos2dx支持并通过arm64 编译
    matlab7安装后的常见问题
    Open SSH原理
    Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization
    12C -- 配置EM Express的端口
    ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE
    ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
    11g新特性-SQL Plan Management
    11g新特性-自动sql调优(Automatic SQL Tuning)
  • 原文地址:https://www.cnblogs.com/xin1998/p/7742317.html
Copyright © 2011-2022 走看看