JS原型链的实现对象的建立(堆栈算法题示例)

之前一直知道JS有比较好的面向对象的写法,今天通过一道算法题来尝试了一下

首先就是JS相对Java来说少了直接创建类的概念,所以说面向对象的写法会比较困难,这里是通过实现了一个栈对象来实现了数组的反转

先贴题目

 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

 

 示例 1:

 输入:head = [1,3,2]
 输出:[2,3,1]
 

 限制:

 0 <= 链表长度 <= 10000

然后是代码

/**
* Definition for singly-linked list.
* function ListNode(val) {
*     this.val = val;
*     this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {number[]}
*/
//先通过创建Stack 所有的方法都要 在继承链中继承给对象然后通过this来调用
//所用到的变量
function Stack(){
  this.items = [];
  Stack.prototype.push = function(element){
      this.items.push(element);//这些都是数组的方法
  };
  Stack.prototype.pop = function(){
      return this.items.pop();
  }
  Stack.prototype.size = function(){
      return this.items.length;
  }
}
var reversePrint = function(head) {
  var stack = new Stack();
  let arr = [];
  //每获取一个元素后,链表向后走一步
  while(head){
      stack.push(head.val);
      head = head.next;
  }
  
  var len = stack.size();
  //通过栈的后进先出的特点来实现链表的反转
  for(let i=0;i < len;i++){
      arr.push(stack.pop());
  }
  return arr;
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值