顺序栈的实现

代码
//顺序栈类SeqStack<T>的实现说明如下所示。
    public class SeqStack<T> : IStack<T>
    {
        
private int maxsize; //顺序栈的容量
        private T[] data;    //数组,用于存储顺序栈中的数据元素
        private int top;     //指示顺序栈的栈顶
        
//索引器
        public T this[int index]
        {
            
get
            {
                
return data[index];
            }
            
set
            {
                data[index] 
= value;
            }
        }

        
//容量属性
        public int Maxsize
        {
            
get
            {
                
return maxsize;
            }
            
set
            {
                maxsize 
= value;
            }
        }
        
//栈顶属性
        public int Top
        {
            
get
            {
                
return top;
            }
        }
        
//构造器
        public SeqStack(int size)
        {
            data 
= new T[size];
            maxsize 
= size;
            top 
= -1;
        }
        
//求栈的长度
        public int GetLength()
        {
            
return top + 1;
        }
        
//清空顺序栈
        public void Clear()
        {
            top 
= -1;
        }

        
//判断顺序栈是否为空
        public bool IsEmpty()
        {
            
if (top == -1)
            {
                
return true;
            }
            
else
            {
                
return false;
            }
        }
        
//判断顺序栈是否为满
        public bool IsFull()
        {
            
if (top == maxsize - 1)
            {
                
return true;
            }
            
else
            {
                
return false;
            }
        }
        
//入栈
        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 GetTop()
        {
            
if (IsEmpty())
            {
                Console.WriteLine(
"Stack is empty!");
                
return default(T);
            }
            
return data[top];
        }
    }

 

posted @ 2010-04-07 15:35  Blue Sky ......  阅读(223)  评论(0编辑  收藏  举报