C#(五十九)之三种数据结构 stack queue sortedList

堆栈(Stack):

代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。

Stack 类的方法和属性

下表列出了 Stack 类的一些常用的 属性:

属性

描述

Count

获取 Stack 中包含的元素个数。

 下表列出了 Stack 类的一些常用的 方法:

序号

方法名 & 描述

1

public virtual void Clear(); 从 Stack 中移除所有的元素。

2

public virtual bool Contains( object obj ); 判断某个元素是否在 Stack 中。

3

public virtual object Peek(); 返回在 Stack 的顶部的对象,但不移除它。

4

public virtual object Pop(); 移除并返回在 Stack 的顶部的对象。

5

public virtual void Push( object obj ); 向 Stack 的顶部添加一个对象。

6

public virtual object[] ToArray(); 复制 Stack 到一个新的数组中。

示例:

// 声明对象
            Stack sta = new Stack();
            // 推入对象
            sta.Push("a");
            sta.Push("b");
            sta.Push("c");
            sta.Push("d");
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部的元素且移除
            string asdf = (string)sta.Pop();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部元素,不移除
            string ff = (string)sta.Peek();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            Console.ReadLine();

Queue是一个对象,存什么类型都好

System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。

优点

1、能对集合进行顺序处理(先进先出)。

2、能接受null值,并且允许重复的元素。

Queue的构造器

构造器函数

注释

Queue ()

初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。

Queue (ICollection)

初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。

Queue (Int32)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。

Queue (Int32, Single)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。

Queue的属性

属性名

注释

Count

获取 Queue 中包含的元素数。

Queue的方法

方法名

注释

Void Clear()

从 Queue 中移除所有对象。

Bool Contains(object obj)

确定某元素是否在 Queue 中。

Object Clone()

创建 Queue 的浅表副本。

Void CopyTo(Array array,int index)

从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。

Object Dequeue()

移除并返回位于 Queue 开始处的对象。

Void Enqueue(object obj)

将对象添加到 Queue 的结尾处。

Object Peek()

返回位于 Queue 开始处的对象但不将其移除。

Object[]ToArray()

将 Queue 元素复制到新数组。

Void TrimToSize()

将容量设置为 Queue 中元素的实际数目。

示例:

Queue que = new Queue();
            // 添加元素
            que.Enqueue("111");
            que.Enqueue("222");
            que.Enqueue("333");
            que.Enqueue("444");
 
            foreach (string  item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 删除元素(取出)
            string qw = (string)que.Dequeue();
            Console.WriteLine(qw+"
");
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出元素,但不删除
            qw = (string)que.Peek();
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

SortedList类:

SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。

排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(存储键值)也就是说是两个数组,相互关联。集合中的各项总是按键值排序。

SortedList 类的方法和属性

下表列出了 SortedList 类的一些常用的 属性

属性

描述

Capacity

获取或设置 SortedList 的容量。

Count

获取 SortedList 中的元素个数。

IsFixedSize

获取一个值,表示 SortedList 是否具有固定大小。

IsReadOnly

获取一个值,表示 SortedList 是否只读。

Item

获取或设置与 SortedList 中指定的键相关的值。

Keys

获取 SortedList 中的键。

Values

获取 SortedList 中的值。

下表列出了 SortedList 类的一些常用的 方法

序号

方法名 & 描述

1

public   virtual void Add( object key, object value ); 
  向 SortedList 添加一个带有指定的键和值的元素。

2

public   virtual void Clear(); 
  从 SortedList 中移除所有的元素。

3

public   virtual bool ContainsKey( object key ); 
  判断 SortedList 是否包含指定的键。

4

public   virtual bool ContainsValue( object value ); 
  判断 SortedList 是否包含指定的值。

5

public   virtual object GetByIndex( int index ); 
  获取 SortedList 的指定索引处的值。

6

public   virtual object GetKey( int index ); 
  获取 SortedList 的指定索引处的键。

7

public   virtual IList GetKeyList(); 
  获取 SortedList 中的键。

8

public   virtual IList GetValueList(); 
  获取 SortedList 中的值。

9

public   virtual int IndexOfKey( object key ); 
  返回 SortedList 中的指定键的索引,索引从零开始。

10

public   virtual int IndexOfValue( object value ); 
  返回 SortedList 中的指定值第一次出现的索引,索引从零开始。

11

public   virtual void Remove( object key ); 
  从 SortedList 中移除带有指定的键的元素。

12

public   virtual void RemoveAt( int index ); 
  移除 SortedList 的指定索引处的元素。

13

public   virtual void TrimToSize(); 
  设置容量为 SortedList 中元素的实际个数。

示例:

SortedList sort = new SortedList();
            sort.Add("1等奖", "都是比较快");
            sort.Add("3等奖", "删掉了");
            sort.Add("2等奖", "线程VB方法");
 
            for (int i = 0; i < sort.Count; i++)
            {
                // 获取键
                Console.WriteLine(sort.GetKey(i));
                // 获取元素值
                Console.WriteLine(sort.GetByIndex(i)+"
");
            }
 
            // 获取键值数组
            foreach (string item in sort.GetKeyList())
            {
                Console.WriteLine(item);
            }
 
            // 获取元素值
            foreach (string item in sort.GetValueList())
            {
                Console.WriteLine(item);
            }

测试使用全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
 
namespace stackss
{
    class Program
    {
        static void Main(string[] args)
        {
            // 声明对象
            Stack sta = new Stack();
            // 推入对象
            sta.Push("a");
            sta.Push("b");
            sta.Push("c");
            sta.Push("d");
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部的元素且移除
            string asdf = (string)sta.Pop();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部元素,不移除
            string ff = (string)sta.Peek();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            Queue que = new Queue();
            // 添加元素
            que.Enqueue("111");
            que.Enqueue("222");
            que.Enqueue("333");
            que.Enqueue("444");
 
            foreach (string  item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 删除元素(取出)
            string qw = (string)que.Dequeue();
            Console.WriteLine(qw+"
");
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出元素,但不删除
            qw = (string)que.Peek();
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            SortedList sort = new SortedList();
            sort.Add("1等奖", "都是比较快");
            sort.Add("3等奖", "删掉了");
            sort.Add("2等奖", "线程VB方法");
 
            for (int i = 0; i < sort.Count; i++)
            {
                // 获取键
                Console.WriteLine(sort.GetKey(i));
                // 获取元素值
                Console.WriteLine(sort.GetByIndex(i)+"
");
            }
 
            // 获取键值数组
            foreach (string item in sort.GetKeyList())
            {
                Console.WriteLine(item);
            }
 
            // 获取元素值
            foreach (string item in sort.GetValueList())
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}

有好的建议,请在下方输入你的评论。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值