[📌단일 연결 리스트 1] 배열과 연결 리스트의 장단점을 비교 / Array Vs Linked List / Random access Vs Sequential access

Поделиться
HTML-код
  • Опубликовано: 22 дек 2024

Комментарии • 35

  • @라면-f3i
    @라면-f3i 2 месяца назад +1

    잘 들었습니다! 감사합니다!

  • @성이름-z4h8f
    @성이름-z4h8f Год назад +3

    아 선생님 너무 감사합니다.
    학교에서 교수님이 무슨 말씀 하나도 이해 못했는데, 이제야 비로소 완벽하게 이해했습니다.

    • @withhoneyc
      @withhoneyc  Год назад

      어머머머 감사합니다:) 홍보 좀 많이 해주세용!!!😜😝😊🤪

  • @상태변화
    @상태변화 Год назад +1

    감사합니다. 너무 깔끔한 설명입니다

  • @마루-b9i
    @마루-b9i Год назад +1

    설명을 정말 잘해주시네요 감사합니다!

    • @withhoneyc
      @withhoneyc  Год назад

      감사합니다:) 거의 첫 영상이라 화질도 안좋고 얼굴도 들이대서 부담스럽네요 ㅠ

  • @액벙
    @액벙 Год назад +1

    설명을 너무 잘해주시네요
    감사합니다^^

  • @jspjsp30431
    @jspjsp30431 Год назад +1

    설명이 깔끔해서 좋아요

    • @withhoneyc
      @withhoneyc  Год назад +1

      저도 감사합니다😊

  • @Woopbangk
    @Woopbangk 9 месяцев назад +1

    깔 끔

  • @handmadesoap8327
    @handmadesoap8327 Год назад +1

    잘 이해하고 갑니다

  • @킴키-o1y
    @킴키-o1y 11 месяцев назад +1

    감사합니다

    • @킴키-o1y
      @킴키-o1y 11 месяцев назад +1

      배열도 자료구조다. 멸치도 생선이다.

    • @withhoneyc
      @withhoneyc  11 месяцев назад

      @user-sb7op4zf8j 배열 최고예요👍👍👍

    • @킴키-o1y
      @킴키-o1y 11 месяцев назад +1

      자료구조란 결국 "베열"과 "연결리스트"의 다양한 변용에 다름아니었네 !!! 가르침 감사합니다 !!!

    • @withhoneyc
      @withhoneyc  11 месяцев назад

      ㅋㅋㅋㅋㅋ 제대로 이해하셨네용👍

  • @서리-s4l
    @서리-s4l 2 месяца назад

    안녕하세요 선생님! 선생님 강의보면서 공부중인데요, 혹시 단일 환형 연결리스트랑 다항식 덧셈 프로그램 관련 강의영상도 있을까요?

  • @cjy8972
    @cjy8972 5 месяцев назад

    선생님 질문있습니다.
    배열 int a[ ] = {1, 2, 3, 4, 5}
    연결리스트 1 => 2 => 3 => 4 => 5
    이렇게 있을 때
    배열의 값1을 지우고 2, 3, 4, 5를 앞으로 한칸씩 이동하는 것과
    연결리스트의 값5를 지우기 위해 1~5까지 순회하는 과정에서 순회를 위한 임시노드로 각 주소를 이동하는 것은
    비슷하게 컴퓨터리소스를 사용하는 것이 아닌가요?

    • @withhoneyc
      @withhoneyc  5 месяцев назад

      맞습니다! 하지만 연결리스트는 값을 앞으로 대입하는 과정이 없습니다.
      연결 리스트는 값을 삭제 후 연결만 하면 되는 반면 배열은 뒤에 있는 값을 앞으로 한 개씩 대입해야 합니다.

  • @wonreno8186
    @wonreno8186 Год назад

    배열에는 array와 vector 두 가지 타입이 있다고 항상 생각해왔는데, 말씀하신 배열에서 하나의 원소를 삭제할 경우에 (가장 최악의 경우를 생각해본다면) array의 포인터 접근법으로 index=0으로 접근하거나 또는 벡터에서의 인덱스 접근법으로 삭제를 하는 경우가 있다고 생각합니다. 배열을 생각해보면 (예를들어), int A[5] = {1, 2, 3, 4, 5}; 가 일반 형태이고 int*p = new int[5]; for(int i = 0;i < 5; i++) {p[i] = i + 1};와 같이 동적 할당하는 방법이 있고 벡터의 경우엔 vector a = {1, 2, 3, 4, 5}; 하는 방법이 기본적으로 initialize할 수 있는 방법으로 알고 있습니다. 이 떼, 일반적인 배열의 경우 배열에 추가나 삭제를 할 수 없는것으로 알고있는데 선생님께서 말씀하신 array에서 추가나 삭제가 일어나는 경우는 벡터나 dynamic array에 해당된다는 경우라고 생각하면 될까요?
    또 array의 경우엔 접근성이 빠른것에 장점이 있고 linkedlist의 경우엔 추가/삭제에 장점이 있습니다. 따라서 각각을 사용해야할 경우가 array는 추가 삭제가 많이 일어나지 않고 접근이 많을때, linkedlist는 그 반대의 경우에 사용해야 할것이라는 건 짐작할 수 있습니다. 이 때, dynamic array와 vector 모두 배열의 형태인데 dynamic array의 경우는 포인터 접근이고 vector의 경우는 벡터 인덱스 접근법을 사용한다고 하던데 둘의 차이가 클까요? 언제 dynamic array를 사용해야하고 언제 vector를 사용해야 할지 잘 모르겠습니다ㅠㅠ

    • @withhoneyc
      @withhoneyc  Год назад +1

      배열, 벡터, 다이나믹에레이 모두 맨 뒤에 원소를 추가하거나 삭제 시 오버헤드가 발생하지 않습니다. 그러나 메모리 중간에 원소를 추가하는 경우 원래 저장 되어 있던 메모리를 뒤로 한 칸 씩 미뤄야 하기 때문에 비용이 발생하게 됩니다.

    • @withhoneyc
      @withhoneyc  Год назад +1

      말씀하신대로 배열의 공간이 부족한 경우는 더이상 추가할 수 없으며 여유 공간에 있는 경우만 추가 가능합니다. 대신 벡터 같은 경우는 push_back 메서드를 이용하면 크기에 상관없이 맨 뒤에 추가 됩니다 동적할당도 메모리 재할당 후 추가 가능합니다.

    • @withhoneyc
      @withhoneyc  Год назад +1

      다이나믹어레이나 벡터 모두 실행 중 메모리를 할당하는 방식으로 어떤 걸 사용해도 상관없습니다. 다만 벡터는 제공되는 메서드가 많아 코드 작성 시 굉장히 유리합니다. 다이나믹 에레이 사용 시 모든 코드를 직접 구현해서 쓰셔야 합니다.

    • @wonreno8186
      @wonreno8186 Год назад

      일반적인 배열의 경우엔 메모리가 남아있는 경우를 말씀하신 거였군요! 빠른 답변 너무 감사합니다ㅠㅠ

  • @sunwookim3004
    @sunwookim3004 Год назад +1

    정말 친절하게 설명해주셔서 감사합니다.

  • @ironpack8207
    @ironpack8207 11 месяцев назад

    - 비전공자인데 수업 잘 듣고 있습니다. 몇 가지 질문이 있어 문의드립니다.😀
    1. C언어를 이용해 스택을 연결리스트로 구현시 코드에 관한 질문입니다.
    - pop 코드에서 top이 현재 가리키고 있는 값을 임시 변수(반환값, item)에 넣어준 후 현재 top이 가리키는 주소를 초기화하는데요. (Top-> temp->link) 여기서 top을 null값으로 초기화하면 다음 스택 위치를 어떻게 top이 찾아 가는지 문의 드립니다. 코드는 free(temp) 후 item을 리턴해주고 끝이나네요.
    2. 유튜브 강좌 문의 : c언어로 역리스트 및 스택구조를 연결리스트로 구현한 혀니쌤 컨텐츠가 있는지 문의드립니다.

    • @withhoneyc
      @withhoneyc  11 месяцев назад +1

      1. 연결 리스트로 스택 구현 시 연결 리스트 맨 앞 삽입과 맨 앞 삭제로 구현 하시면 됩니다. 연결리스트는 배열처럼 인덱스가 없기 때문에 top 지정 변수가 없어도 됩니다.
      2. 당연히 있을거라 생각했는데 없네요 ㅎㅎ
      곧 업로드 할게요!

    • @ironpack8207
      @ironpack8207 11 месяцев назад

      @@withhoneyc 바쁘실텐데 귀중한 답변 감사합니다. 컨텐츠에 헤드 또는 Top이 노드와 연결을 끊고 다음 노드와 연결하거나 방향전환하는 개념도 함께 다뤄주시면 더욱 유익할 것 같네요 ^_^ 스택 입/출력 방식이 LIFO이나 현재는 배열 중심으로 리스트를 생각하다보니 오개념이 생기는 것 같아요

  • @slickslimpark
    @slickslimpark 2 года назад

    노드는 메모리에 있는 공간인가요?삽입 삭제시 시피유가 일하나요? 아님 os가 제어하나요?

    • @withhoneyc
      @withhoneyc  2 года назад +2

      노드는 malloc으로 할당 된 메모리로 ram메모리 영역 중 heap영역에 할당 됩니다:)