체인 테이블 역순 (귀속법)
3976 단어 귀속
#include <Windows.h>
#include <iostream>
using namespace std;
struct node
{
int data;
node* next;
node(int d, node* p):data(d), next(p){}
};
void print_list(node* head)
{
node* temp = head;
while(temp != NULL)
{
cout << temp->data << " -> ";
temp = temp->next;
}
cout << "NULL";
cout << endl;
}
void reverse_linklist1(node*& head)
{
node* first = head;
node* rest = first->next;
if (rest == NULL)
return;
reverse_linklist1(rest);
first->next->next = first;
first->next = NULL;
head = rest;
}
void reverse_linklist2(struct node*& head)
{
node *p = head;
if(p->next == NULL){
return;
}
head = p->next;
reverse_linklist2(head);
p->next->next = p;
p->next = NULL;
}
int main(void)
{
// build link list
node* p3 = new node(3, NULL);
node* p2 = new node(2, p3);
node* p1 = new node(1, p2);
print_list(p1);
reverse_linklist2(p1);
print_list(p1);
getchar();
return 0;
}
==