数据结构(C#版)—栈的使用

        [问题描述]:对堆栈的数据进行存取操作,包括入栈、出栈和读取栈顶元素。

using System;
using System.Text;
using 栈 ;
using 栈与队列;

namespace 栈
{
    public class SeqStack<T> : IStack<T>
    {
        private int maxsize;
        private T[] data;
        private int top;


        public SeqStack(int size)
        {
            data = new T[size];
            maxsize = size;
            top = -1;
        }

        #region //接口实现部分
        public int Count()
        {
            return top + 1;
        }

        public void Clear()
        {
            top = -1;
        }

        public bool IsEmpty()
        {
            return top == -1;
        }

        public void Push(T item)
        {
            if (IsFull())
            {
                Console.WriteLine("Stack is full");
                return;
            }
            data[++top] = item;
        }


        public T Pop()
        {
            T tmp = default(T);
            if (IsEmpty())
            {
                Console.WriteLine("Stack is empty");
                return tmp;
            }
            tmp = data[top];
            top--;
            return tmp;
        }

        public T Peek()
        {
            if (IsEmpty())
            {
                Console.WriteLine("Stack is empty!");
                return default(T);
            }
            return data[top];
        }
        #endregion

        public bool IsFull()
        {
            return top == maxsize - 1;
        }


        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            for (int i = top; i >= 0; i--)
            {
                sb.Append(data[i] + ",");
            }
            return sb.ToString().Trim(',');
        }

    }
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("顺序堆栈测试开始...");
        SeqStack<int> seqStack = new SeqStack<int>(10);
        seqStack.Push(1);
        seqStack.Push(2);
        seqStack.Push(3);

        Console.WriteLine(seqStack);
        //Console.WriteLine(seqStack.Peek());
        //Console.WriteLine(seqStack);
         Console.WriteLine(seqStack.Pop());
         Console.WriteLine(seqStack);
        Console.ReadLine();
    }
}

Written by

说点什么

欢迎讨论

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒