#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class LinkedListedStack {
struct Node {
int* data;
Node* prev;
};
public:
LinkedListedStack() {
top = nullptr;
}
void push(int a,int b) {
Node* temp = new Node;
if (top == nullptr) {
temp->data = new int[2]{ a,b };
temp->prev = nullptr;
top = temp;
}
else {
temp->data = new int[2]{ a,b };
temp->prev = top;
top = temp;
}
};
int* pop() {
if (top == nullptr)return nullptr;
else {
int* data = top->data;
Node* temp = top->prev;
delete top;
top = temp;
}
};
int* pick() {
if (top == nullptr)return nullptr;
else {
return top->data;
}
};
void destory() {
while (top != nullptr) {
Node* temp = top->prev;
delete top;
top = temp;
}
}
private:
Node* top;
};
void MazeEscape(bool (&bVisited)[16][16],char (&mat)[16][16]) {
}
int main() {
ifstream cin("input.txt");
int N;
char mat[16][16];
bool bVisited[16][16];
LinkedListedStack ls;
for (int i = 0; i < 10; i++) {
cin >> N;
memset(bVisited, false, sizeof(bVisited[0][0]) * 16 * 16);
for (int j = 0; j < 16; j++) {
cin >> mat[j];
for (int k = 0; k < 16; k++) {
if (mat[j][k] == '2') { // 시작위치 찾기
ls.push(j,k);
bVisited[j][k] = true;
}
}
}
MazeEscape(bVisited, mat);
}
return 0;
}
여기서 MazeEscape에 매개변수로 배열 ref 넘길수 있는 방법이 지금 내가 사용한 방법밖에없나?
더효율적이거나 간단한 방법없음?
스택 push 메소드에 if가 필요없을 것 같지 않니?
왜? nullptr 로 초기화 안해주면 다른주소로 잡힌느데?
초기화하지 말라고는 안했는데
if (top == nullptr) 이조건 안넣으면 top -> prev 에 어떤값이 들어갈지 어떻해 정함?
push에서는 top->prev 접근 안 하잖아
pop할때 top->prev조건 살피는데 push에서 조건 안설정하면 어디서 설정함?
pop에서 살피면 pop에서 조건을 설정해야지
push에서 prev조건살피고 stack 잔여 여부 살피는건데
pop에서 조건을 설정한다는게 무슨의미지?
요지는, push 메소드에서 if문의 조건이 참이든 거짓이든 같은 코드를 실행한다는 말이야
왜? nullptr 로 초기화 안해주면 다른주소로 잡힌느데? 이 리플 앞에 단거같은데 다른주소로 잡힌다니까?
nullptr로 초기화한다는 그 변수가 대체 뭘 얘기하는 거야?
top.prev
노드 해제할 때 노드 data도 해제해야 함
temp=>prev = nullptr;
지금 그 코드는 if문으로 top이 nullptr이란 걸 확인했을 때의 내용이니까, nullptr을 top으로 치환해도 문제가 없음. 따라서 if 내용과 else 내용이 같아지겠지? 그래서 if문을 없앨 수 있는 거고.
push조건문에서 if문으로 변경되는코드는 temp.prev 값 밖에없는데
너 위에 답글 이해함?
ㅇㅋ 확인