Single Linked List 뒤집기(Reverse)

Jaden·2023년 5월 1일
0

뒤집기

  1. 연결리스트 뒤집기 구현
  2. 파라미터를 이용한 연결리스트 뒤집기 구현 (전역변수 head -> 지역변수 head)

좌측의 연결 리스트를 뒤집어 우측의 연결 리스트로 만든다.
반복문과 재귀로 구현해본다.


1. 연결리스트 뒤집기 구현

void Reverse(){
	Node* prev, *current, *next;
	prev = NULL;
	current = head;
	while(current != NULL){
		next = current -> ptr;
		current -> ptr = prev;
		prev = current;
		current = next;
	}
	head = prev;
}

2. 연결리스트 뒤집기, 파라미터 이용한 구현

Node* Reverse(Node* head){
	Node *prev, *cur, *next;
    prev = NULL;
    cur = head;
    while(cur != NULL){
    	next = cur -> ptr;
        cur -> ptr = prev;
        prev = cur;
        cur = next;
    }
    head = prev;
    return head;
}
int main(){
	Node* head = NULL;
	head = Insert(head, 2);
	head = Insert(head, 3);
	head = Insert(head, 4);
	head = Insert(head, 5);
	Print(head);

	head = Reverse(head);
	Print(head);
}

3. 연결리스트 뒤집기, 재귀 이용

Node* Insert(Node* head, int x){
	Node* tmp = (Node*)malloc(sizeOf(Node));
	tmp -> data = x;
	tmp -> ptr = NULL;
	if(head == NULL){
		head = tmp;
	}else{
		Node* tmp1 = head;
		while(tmp1 -> ptr != NULL){
			tmp1 = tmpq -> ptr;	
		}
		tmp1 -> ptr = tmp;
	}
	return head;
}

0개의 댓글