• 链表的练习


    //随机生成100个数,做插入排序,链表的练习
     

    随机生成100个数,做插入排序,链表的练习
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct node
    {
        int data;
        struct node* next;
    };
    void insert(node * tnode,node* thead)
    {
        node *itr = thead;
        if(tnode->data <thead->data)
        {
            tnode->next = thead;
            thead = tnode;
            return ;
        }
    
        while(itr)
        {
            if(((tnode->data) > (itr->data))&&(itr->next != NULL)&&(tnode->data >itr->next->data))
                itr = itr->next;
            else
            {
                tnode->next = itr->next;
                itr->next = tnode;
                return;
            }
        }
    }
    int main()
    {
        int temp = 100;
        node *head = (node*)malloc(sizeof(node));
        head->data = 0;
        head->next = NULL;
        int _data;
        printf("插入排序前的数据为:\n");
        //生成数据
        while(temp--)
        {
            _data = rand()%1000;
             
            node *_node = (node*)malloc(sizeof(node));
            _node->data = _data;
            _node->next = NULL;
            if(head==NULL) //判断是否为第一个结点
            {
                head = _node;
                continue;
            }
            int m;
            insert(_node,head);
             
        }
        printf("排序后的数据为:\n");
        node *itr = head;
        int ii = 0,jj = 0,flag2 = 0;
        for(int i = 0;i<100;i++)
        {
            if(itr!=NULL)
            {
                ii = itr->data;
                if(itr->next!=NULL)
                {
                    jj = itr->next->data;
                    if(ii>jj)
                        flag2 = 1;
                }
                printf("%d\n",itr->data);
                itr = itr->next;
            }
            else
                break;
        }
        if(flag2==0)
            printf("结果正确");
        else
            printf("结果错了");
        return 0;
    }
    
    
    void insert(node *n,node* &head){
        if(head == NULL){
        head = n;
        return;
        }
        node *p = head;
        node  *q = p->next;
        while(q != NULL && p->data < n->data){
            p = p->next;
            q = q->next;
        }
        p->next = n;
        n->next = q;
    }
     
    
        

    注意头指针的处理啊

  • 相关阅读:
    [LeetCode] 771. Jewels and Stones
    [LeetCode] 129. Sum Root to Leaf Numbers
    java定时器demo
    Spring Boot与监控管理
    springboot与热部署
    springboot中的web项目不能访问templates中的静态资源
    @Component 和 @Bean 的区别
    springcluoud入门
    Dubbo和Zookerper的关系
    Spring boot配置Dubbo三种方式
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3099072.html
Copyright © 2020-2023  润新知