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๋ก ์ฐ๊ฒฐ๋๋ ์ฐ๊ฒฐ๊ตฌ์กฐ๊ฐ ๋ด๊ธฐ๋๊ฒ์ด์ฃ