遍历一次链表,将元素反过来

这篇博客介绍了如何通过一次遍历实现单链表的反转。作者提供了一个C++实现的函数`reverse_list`,该函数接收一个链表头节点,然后通过迭代方式将链表元素顺序反转。此外,还提供了创建测试用例、遍历链表和释放链表内存的辅助函数。博客中包含了完整的源代码示例。
摘要由CSDN通过智能技术生成
/**
 * 只遍历一次单链表,将链表中的元素顺序反过来
 * */

#include<iostream>
using namespace std;

struct list_node     //链表节点
{
	list_node* next;
	int val;
};

list_node* reverse_list(list_node* node)  //逆序
{
	if(node==nullptr)
		return nullptr;
	else if(node->next==nullptr)
		return node;
	list_node* tem_node=node->next;
	node->next=nullptr;
	list_node* app_node;
	while(tem_node->next)
	{
		app_node=tem_node->next;
		tem_node->next=node;
		node=tem_node;
		tem_node=app_node;
	}
	tem_node->next=node;
	return tem_node;
}

void create_test(list_node** pnode,int num) //创建测试用例
{
	list_node* node;
	list_node* tem=nullptr;
	for(int i=0;i<num;++i)
	{
		node=new list_node();
		node->val=i;
		if(tem==nullptr)
		{
			*pnode=node;
		}
		else
		{
			tem->next=node;
		}
		tem=node;
	}
}

void traverse_list(list_node* head) //遍历用例
{
	while(head!=nullptr)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值