データ構造スタックとキュー(1)

1.スタックとキューの定義と特性

  1. スタック:スタック(スタック)は、スタックとも呼ばれ、テーブルの一方の端での挿入および削除操作に制限さた線形テーブル(後入れ先出し)です。この端はスタック最上部と呼ばれ、もう一方の端はスタックの最下部と呼ばれます要素のない空のリストは、空のスタックと呼ばれます。

  2. キュー:スタックとは対照的に、キューは先入れ先出しの線形リストです。テーブルのフロントエンドでの削除操作と、テーブルのバックエンドでの挿入操作のみが許可されます。挿入できる端をリア、削除できる端をフロントと呼びます。

    新しい要素をスタックに挿入することは、スタックにプッシュすることとも呼ばれ、スタックから要素を削除することは、スタックを作成することとも呼ばれます。キュー要素をキューに挿入することをキューイングと呼び、キュー要素をキューから削除することをデキューイングと呼びます。線形テーブルと同様に、スタックとキューのストレージ構造にもシーケンシャルとチェーンが含まれます。

    元のリンク:https://blog.csdn.net/qq_41117236/article/details/80764231

概要:スタックとキューは基本的に線形テーブルですが、操作が制限されています。

2.スタックとキューの適用

ケースナンバーワン:

基数間の変換:10進数の161を8進数に変換するなど、トスとターンの除算方法をよく使用します。image.png

ケース2。ブラケットのマッチング:

コードを作成するときは、ネストされた括弧を多く使用することが多く、コンピューターはスタックの特性を使用して一致させます。image.png

ケース3。式の値:

たとえば、式(a + b)* c + e / f

コンピューターはスタックを使用して計算を実行し、最初に演算子スタックOPTRオペランドスタックOPNDを作成します

*番号をスキャンしてスタックOPNDにプッシュします。

オペレーターがスキャンされた場合、次のようになります。

  1. 演算子がスタックの最上位にあるOPTR演算子よりも優先度が高い場合、その演算子はスタックOPTRにプッシュされます(OPTRの先頭に要素がない場合、演算子は直接スタックにプッシュされます)。

  2. 演算子の優先度がOPTRスタックトップ演算子よりも低い場合は、OPNDスタックトップから2つの数値をポップして計算し、計算結果をOPNDスタックにプッシュします。

*終了文字が検出されるまで、現在の文字の処理を続行します

3.循環キュー

循環キューはキュー記憶域スペースの最後の位置を最初の位置ラップして、キューがリサイクルするための論理リング・スペースを形成することです。

ここでは、循環キューのプログラム実装についてのみ説明します。他のシーケンシャルスタック、チェーンスタックなどについては、以前にシーケンスリストとリンクリストで紹介しましたが、ほとんど変更はありません。

循環スタックの代わりに循環キューがある理由は、キューが「先入れ先出し」であるため、スペースをリサイクルできるためです。MAXQSIZEがキューの長さであり、Q.rearが最後の要素の次の要素を指していると想定します。Q.frontは開始要素を指します。

最初にキューを作成します

 #define MAXQSIZE 64 
 struct data 
{ 
        char name []; 
        int年齢; 
}; 
 struct Com 
 { 
         struct data arr [MAXQSIZE]; 
         intリア= 0; 
        int front = 0; 
         
 }; 
int main 
{ 
        structComメンバー; 
        0を返します。
}

要素を挿入

        void insert(struct Com member、struct data ele)
        { 
        if((member.rear + 1)%MAXQSIZE == member.front)
                   return; 
         else         
                {  
                 *(member.arr [member.front])= ele; 
                  member.rear =(member.rear + 1)%MAXQSIZE; 
                 } 
        } 
       //循環キューが%操作をマスターすることは難しくないことがわかります

おすすめ

転載: blog.51cto.com/14961637/2665769