首页 > 其他 > 详细

逆转单向链表

时间:2014-10-24 19:09:14      阅读:215      评论:0      收藏:0      [点我收藏+]

逆转单向链表

#include <stdio.h>
#include <stdlib.h>
struct Node {
	int data;
	struct Node *next;
};

void list_reverse(struct Node **head)
{
	struct Node *cur, *rev;
	struct Node *hold;
	cur = *head;
	rev = 0;
	while (cur) {
		hold = cur;
		cur = cur->next;
		hold->next = rev;
		rev = hold;
	}
	*head = rev;
}

void list_print(const struct Node *head)
{
	while (head) {
		printf("%d ", head->data);
		head = head->next;
	}
	printf("\n");
}

void list_push(struct Node **head, int data)
{
	struct Node *node;
	node = (struct Node *)malloc(sizeof(struct Node));
	if (!node) return;
	node->data = data;
	node->next = *head;
	*head = node;
}

void list_clear(struct Node **head)
{
	struct Node *cur, *hold;
	cur = *head;
	while (cur) {
		hold = cur;
		cur = cur->next;
		free(hold);
	}
	*head = 0;
}

int main()
{
	struct Node *list = 0;
	
	list_push(&list, 1);
	list_push(&list, 3);
	list_push(&list, 5);
	list_push(&list, 7);
	list_push(&list, 9);
	
	list_print(list);
	list_reverse(&list);
	list_print(list);
	list_clear(&list);
	return 0;
}


本文出自 “chhquan” 博客,请务必保留此出处http://chhquan.blog.51cto.com/1346841/1567617

逆转单向链表

原文:http://chhquan.blog.51cto.com/1346841/1567617

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!