链表报错求调玄关
  • 板块学术版
  • 楼主Crab_Tang
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/7 20:56
  • 上次更新2024/5/8 07:42:36
查看原帖
链表报错求调玄关
1021365
Crab_Tang楼主2024/5/7 20:56
#include<bits/stdc++.h>
using namespace std;
template<class T>
struct Chain_Line{
    unsigned _size;
    
    //节点和迭代器
    struct Chain_Node{
        T _this;
        Chain_Node*_next,*_last;
        Chain_Node(){
            _this=(new T),_next=nullptr,_last=nullptr;
        }
        Chain_Node(T __this=(new T),Chain_Node* __next=nullptr,Chain_Node* __last=nullptr){
            _this=__this,_next=__next,_last=__last;
        }
        Chain_Node operator=(Chain_Node __vnx){
			_this=__vnx._this;
			_next=__vnx._next;
			_last=__vnx._last;
			return (*this);
		}
        Chain_Node operator==(Chain_Node __vnx){
            return ((_this==__vnx._this)&&(_next==__vnx._next)&&(_last==__vnx._last));
        }
    }*_head,*_tail;//_head的next指向链表的第一个元素,_tail的last指向链表的最后一个元素
    
    struct iterator{
        Chain_Node* _pos;
        iterator(){
            _pos=nullptr;
        }
        iterator(Chain_Node* __pos){
            _pos=__pos;
        }
        iterator operator+(unsigned __x){
			Chain_Node*_stt;
			_stt=_pos;
			for(unsigned i=1;i<=__x;++i) _stt=_stt->_next;
			return _stt;
		}
        iterator operator-(unsigned __x){
			Chain_Node*_stt;
			_stt=_pos;
			for(unsigned i=1;i<=__x;++i) _stt=_stt->_lst;
			return _stt;
		}
        iterator operator++(){
            return (*this)=(*this)->_next;
        }
        iterator operator++(int helps){
            (*this)=(*this)->_next;
            return (*this)->_last;
        }
        bool operator==(iterator __it){
            return _pos==__it.pos;
        }
        bool operator!=(iterator __it){
            return _pos!=__it.pos;
        }
        unsigned operator-(iterator __it){
			iterator _it=(*this);
			unsigned num=0;
			while(_it!=__it) _it=_it-1,++num;
			return num;
		}
    };
    unsigned size(){
        return _size;
    }
    Chain_Line(){
        _size=0;
        _head=nullptr;
        _tail=nullptr;
    }
    Chain_Line(unsigned __x){
        resize(__x);
    }
    void resize(unsigned __x){
        _size=__x;
        _head->_next=new Chain_Node;
        Chain_Node* _now,_last;
        _now=_head->_next;
        for(unsigned i=1;i<__x;++i){
            _now->_next=(new Chain_Node);
            _last=_now;
            _now=_now._next;
            _now->_last=_last;
        }
        _tail->_last=_now;
    }
    
};
int main(){
    Chain_Line<int> a(100);
    return 0;
}
2024/5/7 20:56
加载中...