목록2024/03/30 (3)
Minwoo Dev.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0yhJL/btsGdZGJsBN/EmZpJLELF2JW0TSe42Vpf0/img.png)
이전 코드를 바탕으로 노드를 삭제하는 함수를 작성하겠다. 고려해야 할 사항은 아래와 같다. 원래 노드가 빈 노드인 경우 삭제해야할 값이 첫번째 노드인 경우 삭제해야할 값이 중간에 있는 노드인 경우 삭제해야할 값이 마지막 노드인 경우 void deleteNode(Node **head, int data) { if (*head == NULL) // 원래 노드가 빈 노드인 경우(삭제할 값이 없음) { printf("빈 연결리스트입니다. \n"); return; } Node *cur = *head; if (cur->data == data) // 첫 노드가 삭제할 노드인 경우 { *head = cur->link; // head 노드를 한칸 옮김(노드 삭제) free(cur); // 할당 해제 return; } No..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cebLPy/btsGdQ4beLs/nwo8mJ5FYLDOZwKk6Xi0D0/img.png)
단일 연결리스트를 사용하기 위해 우선 구조체를 정의해준다. typedef struct _node { int data; struct _node *link; } Node; 그리고 값을 입력하면 그 값을 연결리스트에 넣어주는 함수를 작성하겠다. 함수는 아래의 경우로 나눠질 것이다. 연결리스트에 아무 값도 들어있지 않은 상태(NULL 상태) 연결리스트에 값이 들어있는 상태 위 조건을 참고하여 AddNode함수를 작성해보겠다. void AddNode(Node **head, int val) // main에서 head를 가져오므로 더블포인터(**) 사용! { Node *newnode = (Node *)malloc(sizeof(Node)); // 새로운 노드 생성! newnode->data = val; // 값 넣기 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctJRpb/btsGcMHYkFP/DJinl4brzDL2v2fkokLT80/img.webp)
연결 리스트(Linked List) 연결 리스트는 data와 link로 이루어진 여러 개의 묶음이 이어져있는 형태이다. 연결리스트를 사용하기 위해, C언어 기준으로 우리는 구조체를 사용한다. typedef struct _node { int data; // 데이터를 저장하는 변수 struct _node *link; // 다음 노드를 가리킬 링크 } Node; 기본적으로 위의 형태와 같이 작성한다. data는 사용자의 필요에 따라 int형 값이 아닌 다른 변수형으로 선언해도 무방하다. 그리고 다음 노드와의 연결을 위한 link 가 필요한데, 이 link는 우리가 선언한 구조체를 그대로 자료형으로 사용하여 포인터 형식으로 선언한다. 말 그대로 다음 노드를 "가리키는" 것이 목적이기 때문에 포인터 변수로 선언한..