c#中的简单数据结构类Stack和Queque

文章目录


前言


栈和队列的存储方式
栈:先进后出
队列:先进先出

`提示:以下是本篇文章正文内容,下面案例可供参考

Stack

//声明
Stack stack = new Stack();
//增(压入栈)
//Stack的本质还是Object数组,依旧可以添加任意类型的数据
stack.Push(1);
stack.Push(true);
stack.Push("3");
stack.Push(new test());
stack.Push(new int[2]);
//删
//这里删的概念不太一样,在栈中的数据只有放入和取出
//取出(取出的是最后一个压入栈中的数据)
object a = stack.Pop();
Console.WriteLine(a);
//清空栈中的所有数据
stack.Clear();
//查
//在栈中不可以直接查看具体的某一个数据,只可以查看栈顶的数据
object b = stack.Peek();
Console.WriteLine(b);
//可以查看栈中是否存在某个数据
if (stack.Contains("3"))
{
    Console.WriteLine("存在");
}
else {
    Console.WriteLine("不存在");
}
//遍历所有数据(遍历顺序与入栈顺序相反,遵循先进后出的原则)
//转数组遍历
object[] arr = stack.ToArray();
for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);
}
//利用迭代器遍历
foreach(var item in stack) {
    Console.WriteLine(item);
}
//改
//在栈中无法直接修改某个具体的元素,只能进行出栈和清空操作
stack.Pop();
stack.Clear();

Queue

//声明
//Queue的本质也是一个obejct类型的数组,可以存储任何类型的数据
//与Stack不同,存储数据遵循的是先进先出的原则
Queue queue = new Queue();
//增
queue.Enqueue(1);
queue.Enqueue(2f);
queue.Enqueue("3");
queue.Enqueue(new Queue());
queue.Enqueue(true);
//队列中的数据的删除概念也和传统的不太一样,单个数据的删除为出栈
queue.Dequeue();
//清空队列中的所有数据
//queue.Clear();
 //查
 //此处也和Stack一致,只能指定找到最后一次进入队列的数据
 Console.WriteLine(queue.Peek());
 //查找队列中是否存在有这个数据
 if (queue.Contains(1))
 {
     Console.WriteLine("存在这个数据");
 }
 else { 
     Console.WriteLine("不存在这个数据");
 }
 //遍历(遍历出来的数据的顺序遵循先进先出的规则)
 //转数组遍历
 object[] arr1 = queue.ToArray();
 for (int i = 0; i < arr1.Length; i++) {
     Console.WriteLine(arr1[i]);
 }
 //利用迭代器遍历
 foreach (var item in queue) { 
     Console.WriteLine(item);
 }
//改
//Queue中无法像数组一样直接修改里面的数据,只能控制数据进出队列和清空队列
queue.Enqueue(1);
queue.Dequeue();
queue.Clear();

总结

Stack和Queue是两个很相似的数据结构类,两者的本质均是object类型的数组,可以用来装载任意类型的数据,但是使用object就会设计装箱和拆箱的概念
两者的区别在于存取数据时遵循的原则不同,此处其实是在存储数据类型时使用的方法不同,一种用头插法,一种使用尾插法,涉及指针的概念

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值