간단하게 기본적인 연결리스트를 만들었다.
실행 시 다음의 메뉴를 선택할 수 있다.
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를 마지막 노드의 주소값으로 저장한다.
- ptr이 가리키는 노드의 다음노드의 주소를 tmp에 저장한다.
- ptr의 링크필드에 이전 노드의 주소값을 저장한다. <-- 링크를 이전노드로 변경
- pre가 ptr 노드로 이동
- ptr이 tmp가 가리키는 다음 노드로 이동
- 계속 반복 후 head를 마지막 노드의 주소값으로 저장
소스파일은 아래 링크에 있다.
'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 |