单链表逆置

运行环境

操作系统:Win10
编辑器:Dev-C++5.11

程序文件

reverse.c

#include <stdio.h>
#include <stdlib.h>

typedef struct List {
	int data;
	struct List *next;
} List;

// 表的初始化,不带头结点
List* InitP() {
	List *node = NULL;
	int i;
	for (i=5; i>0; i--) {
		List *newnode = (List *)malloc(sizeof(List));
		newnode->data = i;
		newnode->next = node;
		node = newnode;
	}
	return node;
} 

// 打印输出
void print(List *L) {
	while (L != NULL) {
		printf("%d ", L->data);
		L = L->next;
	}
	printf("\n");
}

// 单链表反转(就地逆置)
List* reverse(List *L) {
	List *p = L->next, *temp;
	L->next = NULL;
	while (p != NULL) {
		temp = p;
		p = p->next;
		
		temp->next = L;
		L = temp;
	}
	return L;
}

void main() {
	printf("初始化 链表的数据: ");
	List *p = InitP();
	print(p);
	
	printf("反转后 链表的数据: ");
	List *list = reverse(p);
	print(list);
}

运行结果

初始化 链表的数据: 1 2 3 4 5
反转后 链表的数据: 5 4 3 2 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值