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

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

Linked List (1) - insertSortedLL 함수 구현하기

정수 하나를 입력받아 오름차순으로 정렬된 연결 리스트에 삽입하는 함수

주어진 요소 확인하기

구조체

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

insertSortedLL 함수의 매개 변수

  • *ll: (pointer) 연결 리스트 주소
  • item: (int) 삽입할 값

 

핵심 아이디어

  • 먼저 정렬된 순으로 삽입된 연결 리스트에서 cur(현재 노드의 주소)을 추적하며, 삽입할 값을 넣을 위치(idx)를 찾아야 한다.
  • 연결 리스트에 값을 삽입하기 위해서는 prev(이전 노드의 주소)를 추적해야 한다.
  • 만약 중복된 값이 있는 경우, 삽입을 진행하지 않고 -1을 즉시 반환한다.
  • 이외의 경우 해당 인덱스에 노드를 삽입하고 size를 1 증가시킨 후, idx를 반환한다.
    • 만약, 첫 노드를 삽입하는 경우, head에 해당 노드를 연결한다.

 

구현하기

int insertSortedLL(LinkedList *ll, int item)
{
	ListNode *cur = ll->head;
	ListNode *prev = NULL;

	int i = 0;
	while (cur != NULL) {
		if (item < cur->item) {
			break; 
		} else if (cur->item == item) {
			i = -1;
			break;
		} else {
			i++;
			prev = cur;
			cur = cur->next;
		}
	}

	if (i == -1) {
		return -1;
	}

	ListNode *new_node = malloc(sizeof(ListNode));
	new_node->item = item;
	new_node->next = cur;
	if (prev != NULL) {
		prev->next = new_node;
	} else {
		ll->head = new_node;
	}
	
	ll->size++;
	return i;
}
저작자표시 비영리 변경금지 (새창열림)

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

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

    • 홈
  • 링크

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

티스토리툴바