[データ構造]Stack
16051 ワード
資料構造には多様な
これは何の愚かな話ですか.
✔️
スタックヒープ-Dummy はい、簡単に言えば、2479142は裏表紙の箱と考えられます.下が詰まっているので、上から物を置くしかなく、上から物を取るしかありません.
このような線形拘束条件を有する構造のため,先進的なものは先進的なものより先に先進的である.
✔この構造は、最も早い出力に従うように定義されています.
Main Operationでは、
後入先出
ADT
が存在する.その中で、まずStack
を勉強しましょう.スタークはフリングス通?
これは何の愚かな話ですか.
Stack
私たちが知っているプリングスバケツのように?Stack
の辞書定義を理解しました.✔️
스택
Stackスタック
このような線形拘束条件を有する構造のため,先進的なものは先進的なものより先に先進的である.
✔この構造は、最も早い出力に従うように定義されています.
Stack
stores arbitrary objects in a restricted linear structure. Stack ADT
LIFO
は、任意のStack ADT
の拘束された線形構造に格納される.したがって、Stack ADT
の演算はData
でしか実行できない.Main Stack Operations :
Stack
Insert an elementtop
removes the last inserted elementPush(Object)
returns the last inserted element without removing itvoid pop()
とObject top()
をよく確認する必要があります.Insertion
の中にDeletion
が1つもない場合、Empty Stackと定義されます.Stack
の出力順序が入力順序と逆でなければならない場合に使用される.後入先出
Data
の構成、後入Data
先出.Stack Implementation for C
LIFO
により、Main Operationが理解され、現在実施されている.#include <stdio.h>
#include <cstring>
using namespace std;
#define MAX 10001
typedef struct _stack {
int array[MAX];
int top;
} Stack;
void init(Stack *sp)
{
sp->top = -1;
}
Data
関数により、Stack ADT
の値は−1−1に初期化される.int IsEmpty(Stack *sp)
{
if (sp->top == -1)
return 1;
return 0;
}
init
の値が-1-1の場合はEmpty Stackであるため、111に戻る.int size(Stack *sp)
{
return sp->top + 1;
}
sp->top
~sp->top
の値は、1-1:1でEmpty Stack、000~init
で記憶されているため、sp->top
はData
プラス111の値である.int IsFull(Stack *sp)
{
if (sp->top + 1 >= MAX)
return 1;
return 0;
}
size
がtop
より大きい場合、size
は飽和状態にあるので、111に戻る.void push(Stack *sp, int data)
{
if (IsFull(sp))
return;
sp->array[++(sp->top)] = data;
}
MAX
演算Stack
余剰空間の場合、push
が格納される.int pop(Stack *sp)
{
if (IsEmpty(sp))
return -1;
return sp->array[(sp->top)--];
}
Stack
演算は、Data
に空間がない場合にpop
を解放する.int peek(Stack *sp)
{
if (IsEmpty(sp))
return -1;
return sp->array[sp->top];
}
Stack
演算は、現在Data
に格納されている一番上のpeek
を返します.int main()
{
int N;
int Num;
char str[6];
Stack stack;
scanf("%d", &N);
fgetc(stdin);
init(&stack);
for (int i = 0; i < N; i++)
{
scanf("%s", str);
fgetc(stdin);
if (!strcmp(str, "push"))
{
scanf("%d", &Num);
fgetc(stdin);
push(&stack, Num);
}
else if (!strcmp(str, "pop"))
printf("%d\n", pop(&stack));
else if (!strcmp(str, "empty"))
printf("%d\n", IsEmpty(&stack));
else if (!strcmp(str, "size"))
printf("%d\n", size(&stack));
else if (!strcmp(str, "top"))
printf("%d\n", peek(&stack));
}
}
Reference
この問題について([データ構造]Stack), 我々は、より多くの情報をここで見つけました https://velog.io/@andy230/자료구조-Stackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol