Cプログラミングでスタックを実装する方法

0 株式
0
0
0
0

導入

スタックは線形データ構造であり、同じ型のアイテムの集合です。スタック内では、要素の挿入と削除は片方のエンドポイントでのみ行われます。スタックの動作は「後入れ先出し」(LIFO)と呼ばれます。要素がスタックに「プッシュ」されると、その要素がスタックから最初に「ポップ」されます。最も古い挿入されたアイテムに到達するには、それ以前のすべてのアイテムをアンポップする必要があります。.

この記事では、スタック データ構造の概念と、C での配列を使用したその実装について学習します。.

スタック上で実行される操作

以下は Stacks が提供する基本的な操作です。.

  • push: スタックの先頭に要素を追加します。.
  • pop: スタックから最上位の要素を削除します。.
  • isEmpty: スタックが空かどうかを確認します。.
  • isFull: スタックがいっぱいかどうかを確認します。.
  • top: スタックの最上位要素を表示します。.

スタックの基本的な仕組み

初期状態では、スタックの最上位の項目を追跡するためのポインタ(up)が設定されています。スタックは-1に初期化されます。.

次に、スタックの top と -1 を比較して、スタックが空かどうかを確認します。.

スタックに要素が追加されると、最上位の位置が更新されます。.

要素がポップまたは削除されるとすぐに、最上位の要素が削除され、最上位の位置が更新されます。.

Cでのスタック実装

STACKS は、構造体、ポインタ、配列、またはリンク リストを使用して表すことができます。.

この例では、C で配列を使用してスタックを実装します。

#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
int top = -1, inp_array[SIZE];
void push();
void pop();
void show();
int main()
{
int choice;
while (1)
{
printf("\nPerform operations on the stack:");
printf("\n1.Push the element\n2.Pop the element\n3.Show\n4.End");
printf("\n\nEnter the choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
show();
break;
case 4:
exit(0);
default:
printf("\nInvalid choice!!");
}
}
}
void push()
{
int x;
if (top == SIZE - 1)
{
printf("\nOverflow!!");
}
else
{
printf("\nEnter the element to be added onto the stack: ");
scanf("%d", &x);
top = top + 1;
inp_array[top] = x;
}
}
void pop()
{
if (top == -1)
{
printf("\nUnderflow!!");
}
else
{
printf("\nPopped element: %d", inp_array[top]);
top = top - 1;
}
}
void show()
{
if (top == -1)
{
printf("\nUnderflow!!");
}
else
{
printf("\nElements present in the stack: \n");
for (int i = top; i >= 0; --i)
printf("%d\n", inp_array[i]);
}
}

このプログラムは、ユーザーに 4 つのオプションを提供します。

  • 要素をプッシュする
  • 要素をポップする
  • 見せる
  • 終わり

ユーザーが数字を入力するまで待機します。.

  • ユーザーが1を選択した場合、プログラムはpush()を実行します。まず、topがSIZE - 1と等しいかどうかを確認します。等しい場合は「Overflow!!」と表示されます。そうでない場合は、スタックに追加する新しい要素を指定するようユーザーに促します。.
  • ユーザーが2を選択した場合、プログラムはpop()関数を実行します。まず、topが-1かどうかを確認します。-1の場合は「Underflow!!」と表示されます。-1でない場合は、top要素を削除し、その結果をスタックに出力します。.
  • ユーザーが3を選択した場合、プログラムはshow()関数を処理します。まず、topが-1かどうかを確認します。もしそうであれば、「Underflow!!」と表示されます。そうでない場合は、結果のスタックを出力します。.
  • ユーザーが 4 を選択した場合、プログラムは終了します。.

このコードを実行して、数値「10」をスタックに push() します。

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 1
Enter the element to be inserted onto the stack: 10

次に、Stack() 内の要素を表示します。

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 3
Elements present in the stack: 
10

次にpop():

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 2

これでスタックは空になりました。もう一度Pop()を試してみましょう。

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 3
Underflow!! Your code... */

スタックがどのように動作するかを理解するために、このプログラムで実験を続けてください。.

スタック操作の時間計算量

スタック内で一度にアクセスできる要素は 1 つだけです。.

スタック上でpush()およびpop()操作を実行すると、O(1)時間がかかります。.

結果

この記事では、スタック データ構造の概念と、C での配列を使用したその実装について学習しました。.

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない