[C언어] Linked List (2) - alternateMergeLL 함수 구현하기

2025. 4. 13. 14:22·크래프톤 정글/Code 정글(C언어)

Linked List (2) - alternateMergeLL 함수 구현하기

두 번째 리스트의 노드들을 첫 번째 리스트의 자리 사이사이에 삽입하는 함수.

주어진 요소 확인하기

구조체

  • LinkedList: (struct) 연결 리스트 구조체
    • size: (int field) 연결 리스트 요소 갯수
    • *head: (pointer field) 연결 리스트 첫 노드의 주소
  • ListNode: (struct) 노드 구조체
    • item: (int field) 노드의 값
    • *next: (pointer field) 다음 노드의 주소

alternateMergeLL 함수의 매개 변수

  • *ll1: (pointer) 첫번째 연결 리스트 주소
  • *ll2: (pointer) 두번째 연결 리스트 주소

 

핵심 아이디어

  • ll1의 사이사이에 삽입하기 때문에 ll1->size - 1개 삽입 가능, 곧 ll1->size <= 1이면 return
  • 카운터(i)가 ll1->size - 1에 도달하거나, ll2->head가 NULL이 될 때까지 삽입을 반복
    • 먼저, ll2의 첫 노드(ll2->head)을 떼오고(cur2), ll2->head를 cur2->next로 설정
    • ll1에 현재 삽입할 인덱스의 노드(cur1)를 이용해 떼온 노드 cur2를 삽입
    • 삽입 후 현재 삽입할 인덱스 노드를 두 칸 뒤로 이동(한 칸 뒤는 새로 삽입한 cur2이므로)
    • ll1->size 1 증가 및 ll2->size 1 감소

 

구현하기

void alternateMergeLinkedList(LinkedList *ll1, LinkedList *ll2)
{
    if (ll1 == NULL || ll2 == NULL) return;
    if (ll1->size <= 1 || ll2->size == 0) return;

	ListNode *cur1 = ll1->head;
	ListNode *cur2;
	int i = 0;
	while (i < ll1->size - 1 && ll2->head != NULL) {
		cur2 = ll2->head;
		ll2->head = cur2->next;
	
		cur2->next = cur1->next;
		cur1->next = cur2;
		
		cur1 = cur1->next->next;

		ll1->size++;
		ll2->size--;
		i++;
	}
}
저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > Code 정글(C언어)' 카테고리의 다른 글

[C언어] Linked List (4) - moveEvenItemsToBackLL 함수 구현하기  (0) 2025.04.13
[C언어] Linked List (3) - moveOddItemsToBackLL 함수 구현하기  (0) 2025.04.13
[C언어] Linked List (1) - insertSortedLL 함수 구현하기  (0) 2025.04.13
[C언어] 연결 리스트(Linked List) 구현 실습하기  (0) 2025.04.13
[C언어] Linux에서 복잡한 명령어 없이 C 파일 실행하기  (1) 2025.04.11
'크래프톤 정글/Code 정글(C언어)' 카테고리의 다른 글
  • [C언어] Linked List (4) - moveEvenItemsToBackLL 함수 구현하기
  • [C언어] Linked List (3) - moveOddItemsToBackLL 함수 구현하기
  • [C언어] Linked List (1) - insertSortedLL 함수 구현하기
  • [C언어] 연결 리스트(Linked List) 구현 실습하기
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무)
        • 마이 정글(WIL, 에세이) N
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[C언어] Linked List (2) - alternateMergeLL 함수 구현하기
상단으로

티스토리툴바