麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

使用C#實現順序棧的算法

2023-05-16 12:36:01
字體:
來源:轉載
供稿:網友

棧(Stack)是限定在表尾端進行插入或刪除操作的線性表。因此,表尾具有特殊的含義,稱之為棧頂(Top),另一端是固定的,稱為棧底(Bottom)。不含任何數據元素的棧為空棧(Empty Stack)。

棧通常記為:S= (a1,a2,…,an),S是英文單詞stack的第1個字母。棧中元素按a1,a2,a3,...,an的次序進棧,出棧的次序為棧頂元素。即出棧的次序與進棧相反,an第一個出棧,a1最后一個出棧。所以,棧的操作是按照后進先出(Last In First Out,簡稱LIFO)或先進后出(First In Last Out,簡稱FILO)的原則進行的,因此,棧又稱為LIFO表或FILO表。

對于棧來說,主要的操作有:

1、構造空棧

2、清空棧:ClearStack()

3、求棧長(獲得棧中元素的個數):StackLength()

4、返回棧頂元素:GetTop()

5、壓棧操作:Push(object e)

6、彈棧操作(出棧操作):Pop()

7、判斷棧是否為空:IsEmpty()

8、判斷棧是否已滿:IsFull()

using System;

class Stack
{
    int maxsize; //順序棧的容量
    object[] data; //數組,用于存儲棧中的數據
    int top; //指示棧頂

    public object 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 Stack(int size)
    {
        data = new object[size];
        maxsize = size;
        top = -1;
    }

    //求棧的長度(棧中的元素個數)
    public int StackLength()
    {
        return top+1;
    }

    //清空順序棧
    public void ClearStack()
    {
        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(object e)
    {
        if(IsFull())
        {
            Console.WriteLine("棧已滿!");
            return;
        }
        data[++top] = e;
    }

    //出棧操作,并返回出棧的元素
    public object Pop()
    {
        object temp = null;
        if (IsEmpty())
        {
            Console.WriteLine("棧為空!");
            return temp;
        }
        temp = data[top];
        top --;
        return temp;
    }

    //獲取棧頂數據元素
    public object GetTop()
    {
        if (IsEmpty())
        {
            Console.WriteLine("棧為空!");
            return null;
        }
        return data[top];
    }
}

//定義測試類
class Test
{
    static void Main()
    {
        Stack s = new Stack(10);
        Random r = new Random(); //隨機生成數據
        int mid;

        for(int i = 0;i<10;i++)
        {
            mid = (int)r.Next(10,100); //獲取10~100之間的整型數據
            s.Push(mid); //將數據壓棧
            Console.WriteLine("將數據{0}壓棧,現在棧中元素數為:{1}",
            mid,s.StackLength());
        }

        Console.WriteLine("/n準備將數據元素888壓棧:");
        s.Push(888);
        Console.WriteLine("棧中元素個數為:{0}",s.StackLength());
        Console.WriteLine();
        for(int j = 0;j<10;j++) //循環出棧
        {
            Console.WriteLine("將數據{0}彈棧,現在棧中元素數為:{1}",
                                                s.Pop(),s.StackLength());
        }
    }
}

運行結果如下:

C#中實現順序棧的程序源代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产一区二区三区久久久 | 斗罗破苍穹在线观看免费完整观看 | 成人在线视频免费 | 欧美a在线 | 国产一极毛片 | sese综合 | 成人午夜精品久久久久久久3d | 在线成人www免费观看视频 | 欧美日韩色片 | 欧洲成人综合网 | 亚洲一区二区网址 | 激情在线观看视频 | 免费黄色在线观看网站 | 性猛aa久久久 | 91精品国产91久久久 | 久草网在线 | 一级成人毛片 | 欧美a级在线免费观看 | 欧美 国产 亚洲 卡通 综合 | 一区二区三区手机在线观看 | 日本不卡一区二区三区在线观看 | 成人毛片视频免费看 | 国产精品99久久久久久久 | 9999免费视频 | 日韩激情 | 美女羞羞视频在线观看 | 国产精品视频专区 | 男女污视频在线观看 | 干少妇av | 色呦呦一区二区三区 | 国产亚洲高清在线精品不卡 | 日韩专区在线 | 国产一级毛片高清 | 成人福利网 | 在线观看国产一区二区三区 | 天堂成人国产精品一区 | 性少妇freeseⅹbbwhd | 成人毛片在线 | 最新欧美精品一区二区三区 | 欧美a视频在线观看 | 在线看免电影网站 |