본문 바로가기

전체 글

(121)
연결리스트(양방향,head 및 tail에 데이터추가) //양방향에,헤드에 추가 /* 양방향 연결리스트 기능 장점:탐색 양방향 가능 단점:메모리 더많이사용, 구현 복잡 */ #include using namespace std; struct Node { int data; Node *prev; Node *next; }; struct Linkedlist { Node *dummy; //헤드에 추가할때 ->순서가 그닥 필요하지 않을때 Node *tail; //꼬리에 추가할때 -> 연결리스트에 순서가 필요한경우 int len = 0; Linkedlist() //생성자 { dummy = (Node*)malloc(sizeof(Node)); dummy->data = -1; dummy->prev = NULL; dummy->next = NULL; tail = dummy; //같..
[백준 2042] 구간 합 구하기 (1).인덱스 트리 #include using namespace std; int N, M, K; long long int arr[4000001]; void update(long long int a,long long int b) { int diff = b - arr[a]; arr[a] = b; a >>= 1; while (a) { arr[a] += diff; a >>= 1; } } long long int hap(long long int a, long long int b) { //cout
[백준11438 ]LCA2 #include #include #include using namespace std; vectorg[100001]; int depth[100001]; int dp[100001][30]; int visit[100001]; int n; void dfs(int v,int d) //깊이 구하기 { visit[v] = 1; depth[v] = d; for (int i = 0; i = 1;..
[백준1158]조세퍼스문제 -연결리스트로 구현해보기 https://www.acmicpc.net/problem/1158 1158번: 조세퍼스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net STL Que를 써서 구현할수도 있지만, que를 직접 구현해보면서 풀기에 좋은문제라고 생각한다 #include using namespace std; #define INF 987654321 struct Node { int data; struct Node *next; }; struct LinkedQueue { Node *front, *rear; int len=0; LinkedQueue() //구조체의 초기값 정하기 { front == rear == NULL; //처음에 가리키는 노드 없으니..
KMP알고리즘-문자열 찾기 #include using namespace std; //해당 문자열 인덱스 찾기 char arr[20]; char Find[10]; int ans[20]; //같은 문자열의 최초 인덱스 넣을 곳 int cnt = 0; int pi[20]; void FalseFunction(int len) // 패턴 찾기 { pi[0] = -1; pi[1] = 0; //초기화 테이블 int i= 0; int j = 1; while (j
next_permutation STL 구현 int next_permutation(int n) //stl구현 { int i = n - 1; while (i > 0 && arr[i]
비쥬얼스튜디오 콘솔 및 명령인수입력문제점 [콘솔창 자꾸꺼질때. 두가지 해보자.. ]1.메뉴-디버그옵션- 디버깅-일반에서 "디버깅 중지시 자동으로콘솔닫기"체크하기 2 프로젝트이름누르고오른쪽클릭 - 속성 -시스템- 하위시스템-콘솔서브시스템으로 체크하기........ .[명령인수안받아질때] 메뉴의 솔루션구성에 디버그 모드로 설정했는지 확인하기.. 휴,,,,,,,,,,,
TREE (연결리스트) #include using namespace std; //노드생성 class Node //원하는 데이터 선언, 노드생성할때마다 포인터들 초기화 { public: char data; Node *parent; Node *brother; Node *child; Node() {} Node(char data) :data(data), parent(0), brother(0), child(0) {} ~Node() { parent = NULL; brother = NULL; child = NULL; } }; //탐색함수 Node* searchNode(Node *R, char pid) // 루트부터 탐색, 트리의 크기가 클경우에 매번 루트부터 탐색하면 호출횟수가 많아진다는 단점이있다. { } // 추가함수 void Inse..