a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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#中實現順序棧的程序源代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人不卡 | 99久久精品国产一区二区三区 | 亚洲欧美日韩国产 | 色综合久久久久 | 日韩欧美中文在线 | 日韩免费视频一区二区 | 日韩一区二区在线观看 | 日本久久艹 | 日本va| 亚洲精品a区 | 特黄网站 | 99精品国产一区二区 | 黄色电影免费看 | 国产日产精品一区二区三区四区 | 青青av在线| 欧美一区| 日韩欧美国产网站 | 精品久久久久久久久久久 | 狠狠躁夜夜躁人人爽天天高潮 | 欧美视频三区 | 99er视频| 超碰免费在 | 国产精品久久久久久久久久免费看 | 欧美一区免费 | 国产一区二区电影 | 天天操夜夜拍 | 国产精品久久久久久久久久久久久久久久 | 国产精品日韩欧美一区二区 | 成人爽a毛片免费啪啪动漫 日本特级片 | 夜夜骑日日射 | 日韩av一区二区在线观看 | 2022久久国产露脸精品国产 | 性色在线视频 | 国产美女在线观看精品 | 国产精品原创av | 免费黄色大片 | 欧美日韩一区二区在线播放 | 亚洲精品午夜国产va久久成人 | 2018国产大陆天天弄 | 国产成人精品久久二区二区 | 亚洲一区二区三区爽爽爽爽爽 |