剑指offer第三题 从尾到头打印链表

本文探讨了链表数据结构的使用与优化方法,包括解释为何初始化时head为空指针,介绍了通过重载new与delete操作实现内存高效管理的可利用空间表,以及链表倒置的具体实现。

链表知识点

1.为什么不能将cur指向当前元素(为什么head初始化时是个空指针)

如果这样做,插入只能在cur之后,当前节点的前驱结点的next指针将无法更新,不能在cur之前,很难实现在链表第一个元素之前插入的问题,

2.可利用空间表

重载new与delete操作,使得内存的分配更加方便。删除的节点放在可利用空间表的首端,新增的节点去查可利用空间表。

3.链表的倒置

该方法,每次之处理当前节点的倒置

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
using namespace std;

int main()
{
		char str[20]={"We Are Happy"};
		int length=strlen(str);
        int flag[length]={0};
        int count=0;
        for(int i=0;i<length;i++)
        {
            if(str[i]==' '){
                flag[i]=1;
                count++;
            }
        }
        char fake[length+2*count];
        int fakeindex=0;
        int index=0;
        int iter=0;
        while(fakeindex<length+count*2)
        {

        	if(flag[index]==1)
        	{
        		fake[fakeindex]='%';
        		fake[fakeindex+1]='2';
        		fake[fakeindex+2]='0';
        		fakeindex=fakeindex+3;
        		index++;
			}
			if(flag[index]==0)
			{
				fake[fakeindex]=str[index];
				fakeindex++;
				index++;
			}
        }
        
        cout<<fake;
        //strcpy(str,fake);
        //cout<<str;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值