코딩세션
프로그램 컴파일 시 인자 입력받기
int main(int argc, char **argv)
실행파일이 a.out이라고 하고 a.out abc def 5 를 입력하면, argc는 실행파일을 포함한 총 3개의 인자를 더해 argc=4, argv=[a.out, abc, def, 5] 가 된다
Tree 구현하기 & 파일 입출력
class Tree{
public:
int n; //노드 개수
vector <int> *c; // 이차원 가변 배열
void init(const char *_fileName){
File *input=fopen(_fileName,"r");
fscanf(input,"%d",&n);
c=new vector <int>[n];
for(int i=0;i<n;i++){
int tmp;
while(true){
fscanf(input,"%d",&tmp);
if(tmp==-1) break;
c[i].push_back(tmp);
}
}
fclose(input);
}
DFS, BFS 구현
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
class Tree
{
public:
int n; //# of nodes
vector<int> *c;
void Init(const char *_fileName)
{
FILE *input = fopen(_fileName, "r");
fscanf(input, "%d", &n);
c = new vector<int>[n];
for (int i = 0; i < n; i++)
{
int tmp;
while (true)
{
fscanf(input, "%d", &tmp);
if (tmp == -1)
{
break;
}
c[i].push_back(tmp);
}
}
fclose(input);
}
};
/*
void DFS(Tree &_t) //reference in c++
void DFS(Tree *_t) //pointer in c/c++
{
_t.n; //reference
_t->n; //pointer
}
*/
void DFS(Tree &_t)
{
std::stack<int> s;
s.push(0);
while (!s.empty())
{
int x = s.top();
s.pop();
printf("%d ", x);
// for (int i = 0; i < _t.c[x].size(); i++)
for (int i = _t.c[x].size() - 1; i >= 0; i--)
{
s.push(_t.c[x][i]);
}
}
}
void BFS(Tree &_t)
{
std::queue<int> q;
q.push(0);
while (!q.empty())
{
int x = q.front();
q.pop();
printf("%d ", x);
for (int i = 0; i < _t.c[x].size(); i++)
{
q.push(_t.c[x][i]);
}
}
}
int main(int argc, char **argv)
{
Tree t;
t.Init(argv[1]);
printf("DFS Order:\n");
DFS(t);
printf("\nBFS Order:\n");
BFS(t);
return 1;
}
Author And Source
이 문제에 관하여(코딩세션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@djc06048/코딩세션1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)