数据结构-数组、栈C#版实现

数组:

            int[] arraytest = new int[10];
            arraytest[0] = 10;
            Console.WriteLine(arraytest[0]); 

            int[] arraytest2 = { 1, 2, 3, 4, 5, 6 };
            for (int i = 0; i < arraytest2.Length; i++)
            {
                Console.WriteLine(arraytest2[i]);
            }

栈-数组实现:

using System;

namespace DS_ALGCode
{
    /// <summary>
    /// 栈-数组实现
    /// </summary>
    public class S_Stack
    {
        public int MaxSize;
        public int Top = -1;
        public int[] Stack;

        public S_Stack(int size)
        {
            MaxSize = size;
            Stack = new int[MaxSize];
        }

        public bool IsFull { get => Top == MaxSize - 1; }

        public bool IsEmpty { get => Top == -1; }

        //入栈
        public void Push(int data)
        {
            if (IsFull)
            {
                Console.WriteLine("栈满");
                return;
            }
            Stack[++Top] = data;
        }

        //出栈
        public int Pop()
        {
            if (IsEmpty)
            {
                Console.WriteLine("栈空");
                return 0;
            }
            return Stack[Top--];
        }
        //列栈
        public void ShowStack()
        {
            for (int i = Top; i >= 0; i--)
            {
                Console.WriteLine($"Stack[{i}] = {Stack[i]}");
            }
        }
    }
}

栈-链表实现:

using System;

namespace DS_ALGCode
{
    /// <summary>
    /// 栈-链表实现
    /// </summary>
    public class S_StackByLink
    {
        public Node Top;//栈顶

        public int Size=0;

        public bool IsEmpty { get => Top == null; }

        public void Push(int data)
        {
            Node it = new Node(data);
            if (IsEmpty)
            {
                Top = it;
            }
            else
            {
                it.Next = Top;//当前栈顶为新数据的next
                Top = it;//栈顶改为新数据
            }
            Size++;
        }
        public int Pop()
        {
            if (IsEmpty)
            {
                Console.WriteLine("栈空");
                return 0;
            }
            else
            {
                int data = Top.Data;
                Top = Top.Next;//栈顶改为当前的next
                Size--;
                return data;
            }
        }

        public void ShowStack()
        {
            Node curNode = Top;
            while (curNode!= null)
            {
                Console.WriteLine(curNode.Data);
                curNode = curNode.Next;
            }
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠悠虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值