연결리스트

    덱 (연결리스트로 구현)

    덱의 기본 설명은 '덱 (구조체로 구현)'에서 설명을 했으므로 생략하겠다. 백준 10866번 문제를 베이스로 구현한 코드다. 코드 자체는 이중 연결리스트와 유사하다. 또한, 연결리스트로 구현했으므로 full() 함수는 없다. 덱 직접 입력 코드 구현 #include #include typedef struct Node { int data; struct Node *left; struct Node *right; }Node; typedef struct Deque { Node *front; Node *rear; int size; }Deque; void init_deque(Deque *deque) { deque->front = NULL; deque->rear = NULL; deque->size = 0; } int ..

    큐 (연결리스트로 구현)

    연결리스트로 큐를 구현하므로 크기에 제약이 없어 큐가 꽉 찼는지 검사할 필요가 없으므로 full() 함수가 필요가 없다. 큐의 기본적인 설명은 '선형 큐 (구조체로 구현)'에서 설명했으므로 생략하겠다. 원형 큐는 선형 큐를 보완한 형태지만, 여전히 배열 때문에 크기에 제약을 받는 단점을 보인다. 연결리스트로 구현한 큐는 이러한 단점을 없애서 큐를 구현할 수 있는 가장 효율적인 방법이라고 볼 수 있다. 구현 #include #include #include typedef struct Node //노드 정의 { int data; struct Node *next; }Node; typedef struct Queue //Queue 구조체 정의 { Node *front; //맨 앞(꺼낼 위치) Node *rear; ..

    스택 (연결리스트로 구현)

    '백준 10828번: 스택' 문제를 베이스로 둔 배열로 구현한 스택의 코드다. size() 함수는 구현이 가능한지 몰라서 일단 알아오고 다시 수정하겠다..ㅠ 수정해본 결과 내가 원하는 size() 함수는 아니지만 전역 변수로 stacksize를 두고 push함수의 호출에 stacksize가 1 증가하고, pop함수의 호출에 1 감소하는 형태로 구현하긴 했다. 이 방법 말고도 다른 구현 방법을 생각해봤는데, 그것은 노드의 개수를 세는 방법이다. 이 방법으로 코드를 짜기에는 필자가 생각하기에 이미 짜 놓았던 코드의 형식과 어우르지 못해서 아예 새로운 스택의 연결리스트 구현 코드를 짜야한다. 그래서... 다시 도전해보겠다...ㅠㅠ 에잉 모르겠다 포기 연결리스트 스택은 구조체와 기본 배열로 구현한 스택과 달리 ..