스 택, 대기 열, 선형 표 의 차이 와 용도, 그리고 순서 표 와 링크 로 스 택 을 실현 합 니 다.

창고, 대열, 선형 표 의 차이
스 택 은 스 택 에 들 어 가 는 것 과 스 택 에서 나 가 는 것 만 작업 하고 대기 열 은 입 대 와 나 가 는 것 만 작업 하 며 선형 표 에 비해 역 과 대기 열 은 모두 조작 이 제 한 된 선형 표 이다.창고: 먼저 들 어가 서 나 가세 요.함 수 를 호출 할 때 웹 검색 등 대기 열: 먼저 나 오고 나중에 나 옵 니 다.원 소 를 순서대로 처리 해 야 할 때
2. 순서 표 로 스 택 실현
using System;
using System.Collections.Generic;
using System.Text;
namespace    
{
    class SeqStack<T> : IStackDS<T>
    {
        private T[] data;
        private int pop;   //    
        public SeqStack(int size)
        {
            data=new T[size];
            pop = -1;
        }
        public SeqStack() : this(10)
        {
        }
        public int Count
        {
            get { return (pop + 1); }
        }
        public void Clear()
        {
            pop = -1;
        }
        /// 
        ///      
        /// 
        /// 
        public int GetLength()
        {
            return (pop + 1);
        }
        /// 
        ///      
        /// 
        /// 
        public T Peek()
        {
            T temp = data[pop];
            return temp;
        }
        /// 
        ///   
        /// 
        /// 
        public T Pop()
        {
            T temp = data[pop];
            pop--;
            return temp;
        }
        /// 
        ///   
        /// 
        ///   
        public void Push(T item)
        {
            data[pop + 1] = item;
            pop++;
        }
    }
}

三、用链表实现栈

using System;
using System.Collections.Generic;
using System.Text;
namespace    
{
    class LinkStack<T> : IStackDS<T>
    {
        private Node<T> head;  //   
        private int count;  //     
        private Node<T> lastNode; //           
        public LinkStack()
        {
            head = null;
            count = 0;
            lastNode = null;
        }
        public int Count
        {
            get { return count; }
        }
        public void Clear()
        {
            head = null;
            count = 0;
        }
        public int GetLength()
        {
            return count;
        }
        /// 
        ///       
        /// 
        /// 
        public T Peek()
        {
            return lastNode.Data;
        }
        /// 
        ///   
        /// 
        /// 
        public T Pop()
        {
            T temp = lastNode.Data;
            lastNode = lastNode.Front;
            count--;
            return temp;
        }
        /// 
        ///   
        /// 
        /// 
        public void Push(T item)
        {
            Node<T> node=new Node<T>(item);
            if (head == null)
            {
                head = node;
                lastNode = node;
                count++;
            }
            else
            {
                lastNode.Next = node;  //     
                node.Front = lastNode; //     
                lastNode = node;       //        
                count++;               //      
            }
        }
    }
}

最后输出显示正确

class Program
    {
        static void Main(string[] args)
        {
            //Stack stack=new Stack();
            //LinkStack stack=new LinkStack();
            LinkStack<string> stack=new LinkStack<string>();
            stack.Push("  ");
            stack.Push("  ");
            stack.Push("    ");
            string str = stack.Peek();
            string str_2 = stack.Pop();
            string str_3 = stack.Pop();
            int str_4 = stack.Count;
            stack.Clear();
            int str_5 = stack.Count;
            Console.WriteLine(str);
            Console.WriteLine(str_2);
            Console.WriteLine(str_3);
            Console.WriteLine(str_4);
            Console.WriteLine(str_5);
            Console.ReadKey();
        }
    }
}

좋은 웹페이지 즐겨찾기