面试题6——倒序输出链表

思路有两个:
1、利用递归思路,这样比较耗时,但是省空间。
2、既然能够使用递归,就能使用栈来操作。

首先要涉及到链表的定义和初始化:

struct LinkNode{
    int value;
    LinkNode *next;
    LinkNode(int value1, LinkNode *next1 = nullptr){
        value = value1;
        next = next1;
    }
};
int main(){
    LinkNode *head;
    
    head = new LinkNode;
    head->value = 1;
    // head->next = Null;
    
    LinkNode *second = new LinkNode;
    second->value = 2;
    // second->next = Null;
    head->next = second;
    
    cout<<"first linklist"<<head->value<<endl;
    cout<<"second linklist"<<head->next->value<<endl;
    
    return 0;
}

这里需要注明:nullptr是C++11才开始使用的关键字,为了和C中的null区别。C中的null表明的是一个void指针,C++中的NULL表明数字0,但是有时却可以表示一个void指针,所以为了区分两者,C++11中开始只用关键字nullptr表示一个空指针,null就表示0(int)。

代码实现两种思路:

//递归思路
void find(LinkNode *L){
    find(L->next);
    cout<<L->value<<endl;
}

//使用栈来实现
void find1(LinkNode *L){
    std::stack<int> S;
    while(L->next!=nullptr){
        S.push(L-value);
        L = L->next;
    }
    while(!S.empty()){
        cout<<S.pop()<<endl;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值