응애맘마조
230424 강의 본문
어제의 LinkedList에 이어서 강의를 했었습니다.
먼저 전치연산과 후치연산에 대해 잠깐 했었습니다.

먼저 후치연산부터 보겠습니다. 위의 코드처럼 계산하면 답이 어떻게 나올지 사람들마다 얘기가 다 달랐습니다. 12, 13, 14까지 얘기가 나왔었습니다.

하지만 답은 12가 나왔습니다. 그 이유를 알아보겠습니다.
연산자 우선순위로 인해 num++부터 연산하도록 되어있습니다. 하지만 명령줄이 끝나고 연산이 됩니다. 앞에 있는 num과 뒤에 있는 num모두 5가 됩니다. 그 이후에 ++가 두 번 되었기 때문에 5+5+2 해서 12가 나오게 됩니다.

이번엔 전치연산입니다.
++가 앞에 붙었을 경우에는 어떻게 나올지 감이 잡히지 않았습니다.

답은 36이 나왔는데 그 이유를 알아보겠습니다.
이번에는 ++부터 계산이 됩니다. 명령줄이 끝나기 전에 계산을 먼저 합니다. ++가 각각 4번씩 되기 때문에 num값에 각각 4씩 더하게 됩니다. 그럼 num값은 9가 되고 9+9+9+9를 해서 최종 num값은 36이 됩니다.
수업에서는 노드의 출력과 추가로 맨 앞의 추가 및 삭제를 했었습니다.
먼저 추가입니다.

lvalue, rvalue일 때 상관없이 추가할 수 있도록 데이터를 받을 수 있게 했습니다. temp 변수를 사용하여 임시저장공간을 만들어서 데이터를 넣는 방식입니다. 코드를 줄이고 싶었는데 이 이상 안되었습니다.
실행 영상입니다. 리스트의 10, 5, 3은 이미 만들었던 값입니다.
이번엔 삭제입니다.

temp 변수를 사용하여 임시저장공간을 만들어서 데이터를 빼고 delete로 메모리를 해제하여 해제된 메모리에 이전 값을 맨 앞으로 빼는 방식입니다.
추가 및 삭제하는 함수는 전부 재귀함수라서 자신의 함수를 계속 호출해 nullptr이 될 때까지 계속 실행됩니다.
삭제하는 영상입니다. 원하는 값을 따로 받을 필요 없이 지우기만 하는 것입니다.
이후 맨 뒤에서 추가 및 삭제와 임의의 위치의 추가 및 삭제는 과제로 나왔습니다.
이는 따로 게시글로 작성하겠습니다.
읽어주셔서 감사합니다.