간단하게 기본적인 연결리스트를 만들었다.

 

실행 시 다음의 메뉴를 선택할 수 있다.

Choose menu 1)Insert 2)Delete 3)Show :

1번을 선택하면 int 형 데이터를 입력할 수 있고, 연결리스트의 마지막에 삽입된다.

2번은 원하는 데이터를 삭제하고, 3번은 출력한다.

 

코드를 굳이 다 올릴 필요는 없을 것 같고.. 간단하게 void listReverse() 만 보자.

void listReverse()
{
	Node * pre = NULL;
	Node * ptr = head; 
	Node * tmp;

	while(ptr != NULL){
		tmp = ptr->next;
		ptr->next = pre;
		pre = ptr;
		ptr = tmp;
	}
	head = pre;
}

연결리스트의 링크필드를 역순으로 바꾸는 반복문이다. 그리고 마지막에 head를 마지막 노드의 주소값으로 저장한다.

  1. ptr이 가리키는 노드의 다음노드의 주소를 tmp에 저장한다.
  2. ptr의 링크필드에 이전 노드의 주소값을 저장한다. <-- 링크를 이전노드로 변경
  3. pre가 ptr 노드로 이동
  4. ptr이 tmp가 가리키는 다음 노드로 이동
  5. 계속 반복 후 head를 마지막 노드의 주소값으로 저장

reversed

소스파일은 아래 링크에 있다.

https://github.com/GunwooYun/Studying_C

'C' 카테고리의 다른 글

stack using linked list  (0) 2022.05.14
매개변수에 전역변수  (0) 2022.05.13
shallow & deep copy  (0) 2022.04.27
main(int argc, char** argv)  (0) 2022.04.26
(unsigned int)1 - (unsigned int)2 > 0 ? yes : no  (1) 2022.04.23

+ Recent posts