ft_lstadd_front - chanhl22/libft GitHub Wiki

  1 /* ************************************************************************** */
  2 /*                                                                            */
  3 /*                                                        :::      ::::::::   */
  4 /*   ft_lstadd_front.c                                  :+:      :+:    :+:   */
  5 /*                                                    +:+ +:+         +:+     */
  6 /*   By: chanhlee <[email protected].>       +#+  +:+       +#+        */
  7 /*                                                +#+#+#+#+#+   +#+           */
  8 /*   Created: 2021/01/29 15:52:47 by chanhlee          #+#    #+#             */
  9 /*   Updated: 2021/01/29 16:51:26 by chanhlee         ###   ########.fr       */
 10 /*                                                                            */
 11 /* ************************************************************************** */
 12 
 13 #include "libft.h"
 14 
 15 void    ft_lstadd_front(t_list **alst, t_list *new)
 16 {
 17     if (alst != NULL)        // NULL์ด ์•„๋‹๋•Œ (NULL์€ ๋งˆ์ง€๋ง‰์„ ๋‚˜ํƒ€๋ƒ„)
 18     {
 19         if (*alst != NULL)     //ํฌ์ธํ„ฐ๊ฐ€ NULL์ด ์•„๋‹๋•Œ
 20             new->next = *alst;   // new ๋‹ค์Œ ์—ฐ๊ฒฐ์„ *alst๋กœ ํ•ด์ค€๋‹ค. (*alst๋Š” ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋“ค์˜ ์ฒซ๊ฐ’์„ ๋‹ด๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ)
 21         *alst = new; //new๋ผ๋Š” ๋ฆฌ์ŠคํŠธ ๋’ค์— *lst์— ์ €์žฅ๋˜์–ด์žˆ๋˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋ฟ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ด new์ธ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ช…์‹œํ•˜๊ธฐ์œ„ํ•˜์—ฌ *lst์— new๋ฅผ ๋‹ด๋Š”๊ฒƒ์ž…๋‹ˆ๋‹ค.
 22     }                                                                                     
 23 }

lst๊ฐ€ 2์ค‘ํฌ์ธํ„ฐ์ธ๊ฒƒ์€ *lst์— ์ €์žฅ๋˜๋Š” ๊ฐ’์ด ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋“ค์˜ ์ฒซ๊ฐ’์„ ๋‹ด๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
new->next = *lst๋ฅผ ํ•˜์—ฌ๋„ new๋ผ๋Š” ๋ฆฌ์ŠคํŠธ ๋’ค์— *lst์— ์ €์žฅ๋˜์–ด์žˆ๋˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋ฟ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ด new์ธ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ช…์‹œํ•˜๊ธฐ์œ„ํ•˜์—ฌ *lst์— new๋ฅผ ๋‹ด๋Š”๊ฒƒ์ž…๋‹ˆ๋‹ค.
*lst์— list1->list2->list3๊ฐ€ ์žˆ๊ณ  new๋ผ๋Š” list๋ฅผ ์ œ์ผ ์•ž์— ๋ถ™์ธ๋‹ค๊ณ  ํ•˜๋ฉด
new->next = *lst๋ฅผ ํ†ตํ•ด
new->list1->list2->list3๋ผ๋Š” ์—ฐ๊ฒฐ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธฐ๊ฒ ์ฃ ?
๊ทธ๋Ÿฌ๋ฉด ์ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐ˜ํ™˜์ด ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์ด ํ•จ์ˆ˜๋Š” voidํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ new๊ฐ€ ์‹œ์ž‘์ž„์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ๋ฐ›์•„์˜ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ž์ฒด๊ฐ€ 2์ค‘ํฌ์ธํ„ฐ์ธ๊ฒƒ์ž…๋‹ˆ๋‹ค.
*lst = new๋ฅผ ๋‹ด์Œ์œผ๋กœ์จ *lst์—” new->list1->list2->list3๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์—ฐ๊ฒฐ๊ตฌ์กฐ๊ฐ€ ๋‹ด๊ธฐ๋Š”๊ฒƒ์ด์ฃ