zoukankan      html  css  js  c++  java
  • 单向链表类

    #pragma once
    #include "stdafx.h"
    
    template<class T>
    class CLinkList
    {
    public:
        typedef struct LNode{
            T data;
            struct LNode * next;
        }LNode;//单向链表
        LNode * list;//头指针
        CLinkList()
        {
            length=0;
            list=new LNode;
            list->next=NULL;//头指针data不赋值
        }
    
    
    
        void Add(T data)
        {
            length++;       //元素增加
            LNode * now=list;
            while(now->next) now=now->next;
            LNode * tmp=new LNode;
            tmp->next=NULL;
            tmp->data=data;
            now->next=tmp;
        }
    
        void Delete(int index)
        {
            if(index<0) return;//防止下溢
            int i=0;
            LNode * now=list;
            while(now->next && i<index) //防止上溢
            {
                now=now->next;
                i++;
            }
            if(now->next)//防止上溢
            {
                length--;     //元素减少
                LNode * del=now->next;
                now->next=del->next;
                delete del;
            }
        }
    
        void Insert(int index,T data)
        {
            if(index<0) return;//防止下溢
            int i=0;
            LNode * now=list;
            while(now->next && i<index) //防止上溢
            {
                now=now->next;
                i++;
            }
            if(now->next)//防止上溢
            {
                length++;    //元素增加
                LNode * tmp=new LNode;
                tmp->next=now->next;
                tmp->data=data;
                now->next=tmp;
            }
        }
    
        T GetAt(int index)
        {
            if(index<0) return list->next->data;//防止下溢
            int i=0;
            LNode * now=list;
            while(now->next && i<index) //防止上溢
            {
                now=now->next;
                i++;
            }
            return now->next->data;
        }
    
        void SetAt(int index,T data)
        {
            if(index<0) return;//防止下溢
            int i=0;
            LNode * now=list;
            while(now->next && i<index) //防止上溢
            {
                now=now->next;
                i++;
            }
            now->next->data=data;
        }
    
    /*
        T * GetRange(int a,int b)
        {
            
        }*/
    
        T operator [] (int index)
        {
            return GetAt(index);
        }
    
        int GetLen(){return length;}
    
        void display()
        {
            LNode * now=list->next;
            while(now)
            {
                printf("%d,",now->data);
                now=now->next;
            }
            printf("
    ");
        }
    
    
    
    protected:
    
    private:
        int length;
    };
  • 相关阅读:
    支持国产共享软件
    Win CE 5.0 增加电池电量显示
    [转]C# 系统应用之鼠标模拟技术及自动操作鼠标
    自己写的 读写 ini 配置文件类
    自己写的 Readini 类
    sizeof与strlen()、递归优化题解
    Git学习资源收集汇总
    好用的Google Chrome插件
    【转】C# Socket编程(5)使用TCP Socket
    【转】C# Socket编程(4)初识Socket和数据流
  • 原文地址:https://www.cnblogs.com/TQCAI/p/7606783.html
Copyright © 2011-2022 走看看