array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 第18天C#哈希、栈、队列、单链表 - 爱码网

类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。

API

第18天C#哈希、栈、队列、单链表

 

Hashtable hash = new Hashtable();
hash.Add(1, "first");                       //添加键值对
hash.Add(false, 123);
hash.Add("str", true);
int count = hash.Count;                     //获取哈希表中包含元素的个数
bool isHaveKey = hash.ContainsKey(1);       //判断哈希表是否包含指定的键
bool isHaveKey2 = hash.Contains(2);         //同样判断键
bool isHaveValue = hash.ContainsValue(123); //判断是否含有指定的值
ICollection keys = hash.Keys;               //获取哈希表所有的键
foreach (var item in keys)
{
    Console.WriteLine(item); //遍历键名
}
Console.WriteLine("--------------");
ICollection values = hash.Values;           //获取哈希表所有的值
foreach (var item in values)
{
    Console.WriteLine(item);
}
hash.Remove(1);                             //按照指定索引删除相对应的元素
Console.WriteLine("---------------");
foreach (DictionaryEntry item in hash)      //遍历哈希表键值对
{
    Console.WriteLine(item.Key);
    Console.WriteLine(item.Value);
}
bool isSize = hash.IsFixedSize;             //获取一个值表示是否有固定大小
bool isRead = hash.IsReadOnly;              //判断哈希表是否只读
Console.WriteLine("************");
Console.WriteLine(isRead);
hash.Clear();                               //清空哈希表

哈希表和字典的区别

第18天C#哈希、栈、队列、单链表

 

概念

堆栈(Stack)代表了一个先进后出的对象集合,当需要对各项进行先进后出的访问时,则使用堆栈

第18天C#哈希、栈、队列、单链表

 

泛型栈

第18天C#哈希、栈、队列、单链表

 

队列

概念

队列(Queue)代表了一个先进先出的对象集合,当需要对各项进行先进先出的访问时,则使用队列

 

 第18天C#哈希、栈、队列、单链表

 

链表

第18天C#哈希、栈、队列、单链表

 

 优缺点

第18天C#哈希、栈、队列、单链表

 

链表分类

单向链表

当前每一个节点只存储指向下一个节点的地址

双向链表

每一个节点中存储前一个节点的地址和后一个节点的地址

环形链表

头尾连接

链表分为两部分

节点类

数据

指向(指针域):下一个节点/前一个节点

    class Node<T>
    {
        private T data;             //数据
        private Node<T> next;       //指针

        public Node(Node<T> next)
        {
            this.next = next;                       //首节点 只有指针没有值
        }
        public Node(T data)
        {
            this.data = data;                       //尾结点 只有值没有指针
        }
        public Node(T data, Node<T> next)           //中间各节点
        {
            this.Data = data;
            this.Next = next;
        }
        public Node()                               //无参构造
        {
            this.data = default(T);
            this.next = null;
        }

        public T Data
        {
            get
            {
                return data;
            }

            set
            {
                data = value;
            }
        }

        internal Node<T> Next
        {
            get
            {
                return next;
            }

            set
            {
                next = value;
            }
        }
    }

链表类

头节点

    class LinkList<T>
    {
        private Node<T> first;

        internal Node<T> First
        {
            get
            {
                return first;
            }

            set
            {
                first = value;
            }
        }

        public LinkList()
        {
            this.First = null;
        }


        public void Add(T data)
        {
            Node<T> node = new Node<T>(data);//先创建一个节点,数据传进去
            Node<T> tmp = new Node<T>() ;    //如果首节点不为空 定义临时节点
            if (first == null)
            {
                first = node;               //如果首节点是空,则把值赋给首节点
                return;
            }
            tmp = first;
            while (tmp.Next!=null)           
            {
                tmp = tmp.Next;             //让临时节点不断的指向下个节点,直到下个节点为空,那么这个节点则是最后一个节点
            }
            tmp.Next = node;                     //把带有数据的节点赋值给最后一个节点的next


        }
        public int GetLength()                      //链表长度
        {
            int index = 0;
            Node<T> tmp = first;
            while(tmp != null)
            {
                index++;
                tmp = tmp.Next;
            }
            return index;
        }

        public void DisPlay()                       //显示链表数据
        {
            Node<T> tmp = first;            
            while(tmp!=null)
            {
                Console.Write(tmp.Data + " ");
                tmp = tmp.Next;
            }
        }
        public bool IsEmpty()                         //判断链表是否为空
        {
            if(first==null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public void Insert(int index, T data)
        {
            Node<T> node = new Node<T>(data);
            if (index < 0 || index>GetLength()||IsEmpty())
            {
                throw new Exception("数组越界");
            }
            else if(index==0)                           //索引为0时,把数据的next指向首节点,
            {
                node.Next = first;
                first = node;
            }
            else if(index==GetLength())                 //索引跟链表长度一致时,就是添加数据
            {
                Add(data);
            }
            else
            {
                int count = 0;
                Node<T> p = first;
                Node<T> tmp = new Node<T>();
                while(count!=index)
                {
                    count++;
                    tmp = p;                //把首节点给tmp
                    p = p.Next;             //把p的下一个节点给p  此时关系是   tmp p  tmp在p前面

                }
                if (index == count)         //如果到了索引的位置,则开始把数据放到tmp和p的中间
                {
                    tmp.Next = node;
                    node.Next = p;
                }
            }
        }

        //查找链表第i个数据
        public T GetValue(int index)
        {
            int count = 0;
            if(index<0||IsEmpty()||index>GetLength())
            {
                throw new Exception("数组越界");
            }else
            {
                Node<T> tmp = first;
                while(count!=index)                     //循环直到给定的索引值
                {
                    count++;
                    tmp = tmp.Next;                         
                }
                return tmp.Data;                        //把数值return出去
            }
        }

        //删除第i个元素
        public T Delete(int index)
        {
            int count = 0;
            if (index < 0 || IsEmpty() || index > GetLength())
            {
                throw new Exception("数组越界");
            }
            else
            {
                
                if(index==0)
                {
                    T data = first.Data;                    //首节点的值抛出
                    first = first.Next;                     //首节点指向下一个指针指向首节点
                    return data;
                }
                else
                {
                    Node<T> p = first;
                    Node<T> tmp = new Node<T>();
                    while (count != index)                     //循环直到给定的索引值
                    {
                        count++;
                        tmp = p;                                //p节点赋值给临时节点  此时顺序为tmp p
                        p = p.Next;
                        
                    }
                    if(count == index)
                    {
                        tmp.Next = p.Next;                      //把tmp的指针直接指向p的下一个指针,断开了tmp原本的下一个指针
                        return p.Data;
                    }

                }
               
                return default(T);
            }
        }
    }

 

相关文章: