zoukankan      html  css  js  c++  java
  • C++链表STL

    #include <iostream>
    #include <list>
    #include <algorithm>  
     
    #include <stdlib.h>
    #include <string.h>
     
    typedef struct info_s
    {
        int nNumber;
        bool operator==(struct info_s b) const  
       {  
           return this->nNumber == b.nNumber;  
       }  
        
       bool operator!=(struct info_s b) const  
       {  
           return this->nNumber != b.nNumber;  
       }  
        
       bool operator>=(struct info_s b) const  
       {  
           return this->nNumber >= b.nNumber;  
       }  
       
       bool operator<=(struct info_s b) const  
       {  
           return this->nNumber <= b.nNumber;  
       }  
     
         bool operator>(struct info_s b) const  
         {    
             return this->nNumber > b.nNumber;  
         }    
         
         bool operator<(struct info_s b) const  
         {    
             return this->nNumber < b.nNumber;  
         }    
     
    }info_t;
     
    typedef std::list< info_t > list_t;
     
    void append(list_t &List, info_t &info)
    {
        std::cout<<"***append****"<<std::endl;
        List.push_back(info);
    }
     
    void for_each(list_t &List)
    {
        std::cout<<"***for_each****"<<std::endl;
        list_t::iterator iter;
        for(iter = List.begin(); iter != List.end() ;iter++)
        {
            std::cout<< iter->nNumber <<std::endl;
        }
    }
     
    void del_end_info(list_t &List)
    {
        std::cout<<"***del_end_info****"<<std::endl;
        if(! List.empty())
        {
            List.pop_back();
        }
    }
     
    void for_each_delete(list_t &List)
    {
        list_t::iterator iter;
        for(iter = List.begin(); iter != List.end() ;)
        {
            std::cout<< "delete before  iter->number:"<<iter->nNumber <<std::endl;
            iter =  List.erase(iter);
            std::cout<< "delete  after iter->number:"<< iter->nNumber <<std::endl;
        }
     
    }
     
     
    int insert_one(list_t &List , info_t &info, int iPlace)  
    {  
        int i = 0;  
     
        std::cout<<"insert_one"<<std::endl;  
        if(iPlace < 0)  
        {  
            std::cout<<"insert_one  param error"<<std::endl;  
            return -1;  
        }  
      
        list_t::iterator iter = List.begin();
        
        while(iter != List.end())   
        {       
             //std::cout<<" dump "<< (*iVector)<<std::endl;  
             if(i == iPlace)  
             {  
                  iter = List.insert(iter , info); //此时insert的返回值是迭代器,插入成功后iVector指向插入的位置  
                  std::cout<<" insert_one   after List point "<<iter->nNumber <<std::endl;  
                  return 0;  
             }  
               
             i++;  
             ++iter;    
        }    
      
        
        iter = List.insert(List.end() , info);
        
        return 0;  
    }  
     
     
    void find_one(list_t &List,info_t info )
    {
     
        std::cout<<"find_one"<<std::endl;  
     
        list_t::iterator iter ;
     
        iter = std::find(List.begin(),List.end(), info);
     
        if(iter != List.end())
        {
            std::cout<<"find it"<<std::endl; 
        }
        else
        {
            std::cout<<"not find it"<<std::endl; 
        }
     
    }
     
    void Sort(list_t & List)
    {
        std::cout<<"Sort it"<<std::endl; 
        List.sort();
        for_each(List);
    }
     
    int main()
    {
        //初始化
        list_t List;
        info_t info;
        memset(&info, 0, sizeof(info_t));
     
        //添加
        info.nNumber = 8;
        append(List, info);
     
        info.nNumber = 5;
        append(List, info);
     
        info.nNumber = 7;
        append(List, info);
        
        info.nNumber = 1;
        append(List, info);
     
        info.nNumber = 1;
        append(List, info);
     
        info.nNumber = 2;
        append(List, info);
     
        info.nNumber = 1;
        append(List, info);
     
        //遍历
        for_each(List);
     
        //插入
        info.nNumber = 80;
        insert_one(List,info,3);
        for_each(List);
        //查找
        find_one(List,info);
     
        //排序
        Sort(List);
     
        //删除末尾
        del_end_info(List);
        for_each(List);
     
         std::cout<< " size:"<<List.size()<<std::endl; 
     
        //删除所有
    //    List.clear();
        for_each_delete(List);
        for_each(List);
        std::cout<<  " size:"<<List.size()<<std::endl; 
     
        
        return 0;
    }
     
  • 相关阅读:
    再谈PHP、Python与Ruby
    php消息队列
    创业如同追女生:成功的创业者都是追女生好手
    Windows 下 Python easy_install 的安装
    常用Python第三方库 简介
    Highcharts使用手册
    sqoop java api
    redis 读写分离
    linux 安装redis
    hive 安装和部署
  • 原文地址:https://www.cnblogs.com/Stephen-Jixing/p/9867215.html
Copyright © 2011-2022 走看看