link list反轉

  • 23
  • 0

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);
}