スタック
15905 ワード
*この記事は2022年1月から2月までのNOTIONについて検討したものです.
スタック関連関数1)is empty():空の
アレイを使用したスタックの実装
👉 アレイのみを使用したスタック実装 接続リストを使用してスタック を実装する.
改訂前 訂正後(エラーチェック後正解) 関連STLまとめ
後期 list STLについて説明します.初めて使うのはSTLを整理するいい機会です エラーが多すぎます.ほとんどはメンバー関数の機能を理解していないために書かれたエラーです. 印象的なエラーをいくつかまとめました erase(反復器)の戻り値は反復器!!!関数で削除操作を行った後、削除ノードの右側のノードに戻ります.つまり、この関数を無視するとエラーが発生します.このリピーターを受信するには、リピーターが必要です.(ただし、重複文字の生成はよく理解できないので、もう一度見てみます) 挿入(重複者、挿入するデータ)は、現在の重複者が指すノードの左側に作成されます.左です.右ではありません. 覚えていますが、実はSTLなしで直接接続リストを作成して実現したいのですが、このようにすると初期値の生成から難しいです.だからSTLは使えなかったんだけど今回の勉强が终わってSTLが一つも叶わなかったので残しておきました
-22.1.13スタッククリーンアップ
スタックとは?
スタックの実装
//배열
**bool is_empty_stack(){**
/*if (top == -1)return true;
else return false;*/
return(top == -1);
}
//연결리스트
bool is_empty_stack() {
return(SP == NULL);
}
2であるか否かを判定するis full():スタックが//배열
**bool is_full() {**
/*if (top == MAX_SIZE - 1)return true;
else return false;*/
return(top == MAX_SIZE - 1);
}
//연결리스트는 자료의 공간이 모자랄 일이 없음. 따라서 full 판단 함수도 존재하지 않음
3で満たされているか否かを判定する:スタックの総データ出力//배열
**void push(element data) {**
if (is_full()) { cout << "error:stack full" << endl; }
else { **Stack[++top] = data;** }
}
//연결리스트
void push(element data) {
Node* new_node = new Node;
new_node->item = data;
new_node->link = NULL;
if (SP == NULL) {
SP = new_node;
}
else {
new_node->link = SP;
SP = new_node;
}
}
アレイを使用したスタックの実装
👉 アレイのみを使用したスタック実装
//배열
**element pop() {**
if (is_empty_stack()) { cout << "error:stack empty" << endl; return -1; }
else return **Stack[top--]**;
}
👉 配列とオブジェクトを使用したスタックの実装//연결리스트
element pop() {
if (is_empty_stack()) { return-1; }
else {
element item = SP->item;
SP = SP->link;
return item;
}
}
//배열
**element peek() {**
if (is_empty_stack()) { cout << "error:stack full" << endl; return -1;}
else { return Stack[top]; }
}
22.01.14百人編集(接続リスト)解答
//연결리스트
element peek() {
if (is_empty_stack()) { return -1; }
else {
return SP->item;
}
}
//배열
**void print_stack() {**
cout << "[stack status: top: "<<top<<"]" << endl;
if (is_empty_stack()) { cout << "error:empty stack" << endl; }
else {
for (int i = 0; i <= top; i++) {
cout << Stack[i] << endl;
}
}
}
//연결리스트
void print_stack() {
cout << "stack status" << endl;
if (is_empty_stack()) { cout << "error: empty stack" << endl; }
else {
for (Node* list = SP; list != NULL; list = list->link) {
cout << list->item << endl;
}
}
}
Reference
この問題について(スタック), 我々は、より多くの情報をここで見つけました https://velog.io/@ppparkta/스택テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol