目录
1.想:将B站视频《C#数据结构与算法》--2020 最新精讲版:提高学习效率,所以编写此系列博客
2.因为这个系列教程评价目前是最好的,所以想看视频、写代码、写博客
1.你可以忘记代码,也不能忘记 演示动画:因为记住了演示动画,思路就有了,写代码就有了思路
一.目的
1.想:将B站视频《C#数据结构与算法》--2020 最新精讲版:提高学习效率,所以编写此系列博客
2.因为这个系列教程评价目前是最好的,所以想看视频、写代码、写博客
二.参考
1.C#数据结构与算法》-3-4 删除链表中的结点
3-4 删除链表中的结点https://www.bilibili.com/video/BV1gE41157pC?p=12
- 学习的视频
三.注意
1.你可以忘记代码,也不能忘记 演示动画:因为记住了演示动画,思路就有了,写代码就有了思路
四.操作:1:成功
1.栈 的相关操作
1.新建接口:
IStack.cs
1.新建类:Array1Stack
1.动画:VS自动 实现接口
1.代码:IStack
using System;
using System.Collections.Generic;
using System.Text;
namespace DataStructure
{
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:数组栈接口]
/// </summary>
interface IStack<E>
{
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:得到 数组栈接口 数量]
/// </summary>
/// <returns>数量</returns>
int Count { get; }
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:得到 数组栈接口 是否为空]
/// </summary>
/// <returns>是否为空</returns>
bool IsEmpty { get; }
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:添加元素到栈接口数组]
/// </summary>
/// <param name="e"></param>
void Push(E e);
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:删除 数组栈接口 的顶部,并且返回数组栈]
/// </summary>
/// <returns></returns>
E Pop();
/// <summary>
/// [Author:XZY Time:20211022 视频编号:4-2 数组栈]
/// [功能:检查元素是否在栈数组接口中]
/// </summary>
/// <returns></returns>
E Peek();
}
}
1.代码:Array1Stack
using System;
using System.Collections.Generic;
using System.Text;
namespace DataStructure
{
/// <summary>[功能:泛型的数组栈,继承 泛型的IStack 接口] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
class Array1Stack<E> : IStack<E>
{
/// <summary>[功能:创建泛型的数组] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
private Array1<E> arr;
/// <summary>[功能:得到 泛型数组 的元素数量] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public int Count { get { return arr.Count; } }
/// <summary>[功能:得到 泛型数组 是否为空] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public bool IsEmpty { get { return arr.IsEmpty; } }
/// <summary>[功能:构造函数 Array1Stack ] [参数:capacity=创建容器的大小] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public Array1Stack(int capacity)
{
arr = new Array1<E>(capacity);//构造函数中如果知道链表多长就直接创建
}
/// <summary>[功能:构造函数 Array1Stack ] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public Array1Stack()
{
arr = new Array1<E>();//构造函数中如果不知道链表多长就自动创建容量大小为10的链表;
}
/// <summary>[功能:将元素添加到数组中 ] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public void Push(E e)
{
arr.AddLast(e);//因为将元素放在最后一位,时间复杂地为O(1)
}
/// <summary>[功能:将数组最后一个元素删除 ] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public E Pop()
{
return arr.RemoveLast();
}
/// <summary>[功能:得到数组最后一个元素 ] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public E Peek()
{
return arr.GetLast();
}
/// <summary>[功能:重写转换为字符串,目的为了输出好看 ] [Author:XZY Time:20211022 视频编号:4-2 数组栈] </summary>
public override string ToString()
{
return "Stack:" + arr.ToString() + "Top";
}
}
}
1.运行效果:
Array1Stack<int> stack = new Array1Stack<int>();
//测试:数组栈末尾添加元素
for (int i = 0; i <5; i++)
{
stack.Push(i);
Console.WriteLine(stack);
}
stack.Pop();
Console.WriteLine(stack);
Console.ReadLine();