좌측의 연결 리스트를 뒤집어 우측의 연결 리스트로 만든다.
반복문과 재귀로 구현해본다.
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;
}
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);
}
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;
}