파도가 칠 때는 서핑을

Soon as possible

Wait!

공부/C\C++

[C/C++] 구조체와 연결리스트

hyeonhki 2021. 3. 16. 19:41
728x90

- 구조체란?

구조체는 struct 키워드로 정의하며 data struct(자료 구조)의 약어로 struct를 사용한다.

  • 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다.

- 구조체 포인터

struct Person { //구조체 정의
    char name[20]; // 구조체 멤버 1
    int age;    //구조체 멤버 2
    char address[100];    //구조체 멤버 3
}

struct Person *p1 = malloc(sizeof(struct Person));    //구조체 포인터 선언 및 메모리 할당

// 화살표 연산자로 포인터에서 구조체 멤버로 접근하여 값 할당!
strcpy(p1->name, "홍길동);
p1->age = 30;
  • 구조체 포인터 = &구조체 변수
    를 통해서도 구조체 포인터 사용 가능
    화살표 연산자가 참조의 의미를 띈다고 생각하면 될 듯

연결리스트

  • 연결 리스트는 데이터가 담긴 노드(메모리공간)을 일렬로 연결해놓았다고 해서 연결리스트라고 불린다.
    특징 1. 리스트의 중간 지점에 노드를 쉽게 추가하거나 삭제 가능

    1. 특정 노드를 찾으려면 노드를 모두 검색해야 한다.
    2. 크기가 고정되어 있지 않다.
  • 다른 노드를 가리키는 포인터가 하나씩만 있는 단일 연결 리스트(singly linked list)

typdef sturct s_list //연결 리스트의 노드 구조체
{
    void            *content; // content의 주소를 저장할 멤버
    struct s_list    *next; //다음 노드의 주소를 저장할 포인터
}    t_list;
  • next에는 다른 노드의 메모리 주소를 저장한다.

    • head node : 단일 연결 리스트의 기준점이며 head라고 부른다. 첫 번째 노드를 가리키는 용도로 데이터를 저장하지 않는다.
    • node : 단일 연결 리스트에서 데이터가 저장되는 실제 노드.

연결리스트의 이중 포인터와 포인터

  • 이중포인터가 연결리스트 전체, 배열이나 문자열 처럼 생각하고 포인터를 문자열의 문자 자체로 이해하면 될 듯.

출처 : C언어 코딩도장

728x90