反转单链表 和 将数组按照某种条件分为前后两个部分

本文回顾了在解决《剑指offer》中反转单链表和按条件划分数组的问题过程。作者通过自己的思考,克服了算法设计和C++语法遗忘的困难,详细介绍了代码实现,包括单链表的插入和反转,以及如何一次性遍历数组将奇数放在前面,偶数放在后面。这是一个关于数据结构与算法实践的总结。
摘要由CSDN通过智能技术生成

what did not kill you, make you stronger! 今天下午终于完结这几日笼在心头的乌云,彻底打败! 之前读到<剑指offer>第三章的"反转链表的题目", 当时决定顺带复习国庆放假前的数据结构啥的,于是打算by my own head,不借助书本的来完成, 困难是有的,算法卡壳了,在座位上苦苦思不得,注意力很难集中时,真的想放弃。又比方说C++语法好像都忘了,这些都不是问题,当决定放弃时才是问题。

现在开始总结:

首先上的是代码问题,之后再对指针的操作做总结。

一,代码问题

1.单链表实现(最简单的模式,链表不排序,从表头开始插入新元素)

2.反转单链表

#include <iostream>
using namespace std;

//本来想写成函数模板的,不过想来模板形式简单,但是需要写的内容较多,容易出错误,这已经领教过了
class list
{
public:
	list() {listHead = NULL;}            //必须初始化单链表的头指针listHead, vs会给没有初始化的指针分配0XCCCCCCCC,而不是0X00000000(NULL)。
	
        void addNode(int a);
	void rotateList();

	void print();

private:
	class listNode
	{
	public:
		listNode(int a, listNode *p):m_value(a),m_pNext(p) {}
		int m_value;
		listNode *m_pNext;
	};

	listNode *listHead;            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值