link list反轉
struct node {
int data;
struct node* next;
};
void printList(node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
struct node* reverse(node* h) {
struct node* p, * q;
int i;
if (h->next != NULL) {
p = h->next;
h->next = NULL;
while (p != NULL) {
q = p;
p = p->next;
q->next = h;
h = q;
}
}
return h;
}
int main() {
struct node n1 = { 3, NULL }, n2 = { 5, NULL }, n3 = { 8, NULL }, * head;
head = &n1;
n1.next = &n2;
n2.next = &n3;
printList(head);
head = reverse(head);
printList(head);
return(0);
}